当前位置:  编程技术>移动开发
本页文章导读:
    ▪DirectFB把内容与此同时输出到主副surface        DirectFB把内容同时输出到主副surface一直忙项目,很长时间没有更新博客了。 近期碰到一个问题, 就是设定了DirectFB的主Surface输出到高清接口,比如HDMI, 而副Surface的内容则要输出到标清接口.........
    ▪ 挪动跨平台开发中使用Lua实现业务逻辑多平台重用        移动跨平台开发中使用Lua实现业务逻辑多平台重用移动跨平台开发中使用Lua实现业务逻辑多平台重用 @authorAnderson Mao, 2013-03-26   移动跨平台应用,如果不是用HTML5的Web应用,经常需要在多个客.........
    ▪ NGUI的显示有关问题       NGUI的显示问题使用NGUI的时候,如果上面的图片或者Label不能正常显示,注意3点 1)transform的z轴是不是在底层背景的上面。 2)在同一个panel下,检查下Depth是否正确。 3)如果你上面的图片或.........

[1]DirectFB把内容与此同时输出到主副surface
    来源: 互联网  发布时间: 2014-02-18
DirectFB把内容同时输出到主副surface
一直忙项目,很长时间没有更新博客了。

近期碰到一个问题, 就是设定了DirectFB的主Surface输出到高清接口,比如HDMI, 而副Surface的内容则要输出到标清接口,比如CVBS。

我不想一条语句调用两次,分别向不同的Surface画, 研究了一下, Directfb是可以做到在输出到主Surface的同时,flip一份到副Surface的。

具体代码如下:



#include <stdio.h>
#include <directfb.h>

 
static IDirectFB *dfb = NULL;
static IDirectFBSurface *primary = NULL;
static IDirectFBDisplayLayer* secondaryLayer = NULL;
static IDirectFBSurface* secondarySurface = NULL;


static int screen_width = 0;
static int screen_height = 0;
 
#define DFBCHECK(x...) \
{                      \
	DFBResult err = x; \
	if (err != DFB_OK) \
	{\
		fprintf( stderr, "%s <%d>:\n\t", __FILE__, __LINE__ );\
		DirectFBErrorFatal( #x, err );\
	}\
}
 
int main(int argc, char **argv)
{
	DFBSurfaceDescription dsc;
	DFBDisplayLayerConfig layerCfg;
	 
	DFBCHECK (DirectFBInit (&argc, &argv));
	DFBCHECK (DirectFBCreate (&dfb));
	 
	// DFBCHECK (dfb->SetCooperativeLevel (dfb, DFSCL_FULLSCREEN));
	dsc.flags = DSDESC_CAPS;
	dsc.caps = DSCAPS_PRIMARY | DSCAPS_FLIPPING;

	DFBCHECK (dfb->CreateSurface( dfb, &dsc, &primary ));
	
	DFBCHECK (primary->SetColor (primary, 0xff, 0x00, 0x00, 0xff));
	DFBCHECK (primary->GetSize (primary, &screen_width, &screen_height));
	DFBCHECK (primary->FillRectangle (primary, 0, 0, screen_width, screen_height));
	 
	DFBCHECK (primary->SetColor (primary, 0x80, 0x80, 0xff, 0xff));
	DFBCHECK (primary->DrawLine (primary,
		0, screen_height / 6,
	screen_width - 1, screen_height / 6));
	DFBCHECK (primary->Flip (primary, NULL, 0));

	dfb->GetDisplayLayer(dfb, DLID_PRIMARY+1, &secondaryLayer);
	secondaryLayer->SetCooperativeLevel(secondaryLayer, DLSCL_ADMINISTRATIVE);

	
    layerCfg.flags = DLCONF_SOURCE;
    layerCfg.source = DLSID_SURFACE;
	secondaryLayer->SetConfiguration(secondaryLayer, &layerCfg);

	
	secondaryLayer->GetSurface(secondaryLayer, &secondarySurface);
	secondarySurface->Flip(secondarySurface, NULL, DSFLIP_NONE);

        sleep(10);
	secondaryLayer->Release( secondaryLayer );
	secondarySurface->Release( secondarySurface );
	primary->Release(primary);
	dfb->Release(dfb);
	return 0;
}



    
[2] 挪动跨平台开发中使用Lua实现业务逻辑多平台重用
    来源: 互联网  发布时间: 2014-02-18
移动跨平台开发中使用Lua实现业务逻辑多平台重用

移动跨平台开发中使用Lua实现业务逻辑多平台重用

@authorAnderson Mao, 2013-03-26

 

移动跨平台应用,如果不是用HTML5的Web应用,经常需要在多个客户端开发原生程序,如J2ME/Android/iOS/等。

 

一般来说会有两大类客户端代码: C/ObjectC 和 Java。

如果没有代码重用/共享,开发类似的功能,比如一个Job, 在每个平台上都需要有一个Job Service业务逻辑。

 

使用原生应用,优点是UI方面现在可以比HTML5等表现更好。(以后HTML5可能会功能增强)。缺点是需要为每个平台编写类似,但是不共用的代码,比如Job Service, 功能类似,但是有多个平台版本。

 

对于HTML5可以满足的应用,跨平台可以用类似PhoneGap框架等来实现跨平台。

对于游戏等图像操作,也可以用基于Mono的Unity3D等框架来实现跨平台开发。

 

但是,对于业务逻辑比较复杂的其它应用,HTML5的UI效果又达不到要求,需要原生UI的,则可以考虑在业务逻辑层共享代码。

 

结构:

 

特点:

  • 客户端UI代码使用原生代码,每个平台独立编程。
  • 客户端业务逻辑代码,全部使用Lua语言实现,每个平台嵌入Lua引擎,Lua业务逻辑代码只有一套,多平台重用。比如Job Service, 用Lua实现,多平台重用。
  •  

    优点:

    • 客户端UI 可以用原生做到性能最好
    • 客户端业务逻辑多平台重用
    • Lua业务逻辑代码可以在PC上直接测试。(不需要客户端和模拟器)
    • Lua语言和引擎小巧使用广泛比较稳定可靠。

     

    缺点:

    • 需要学习Lua, 在多平台上配置嵌入Lua环境.

     

    问题:

     

    Q: 可不可以用JavaScript 引擎替代Lua?

    A: JavaScript引擎也可以被嵌入,但是相比Lua体积太大,JavaScript功能主要是操作DOM方面比较方便,但是写业务逻辑Lua应该也可以胜任。

     

    Q: Mono 平台也可以跨平台使用,用C#实现业务逻辑重用,然后也用原生做UI,相比Lua是不是更好?

    A: Mono平台本身的以后发展可能是一个问题。另外如果以前没用过C#,也需要学习C#。

     

    参考:

    Lua: http://www.lua.org/

    Calatrava:自由构建UI的跨平台移动框架(使用JavaScript开发重用业务逻辑) http://www.infoq.com/cn/articles/calatrava



        
    [3] NGUI的显示有关问题
        来源: 互联网  发布时间: 2014-02-18
    NGUI的显示问题

    使用NGUI的时候,如果上面的图片或者Label不能正常显示,注意3点

    1)transform的z轴是不是在底层背景的上面。

    2)在同一个panel下,检查下Depth是否正确。

    3)如果你上面的图片或者Label在一个panel里,而背景不在panel里,这时的Depth是不起作用的,你要把背景图片也放在已经存在的panel里,或者新建一个panel,把背景图片放进去。再调整下前后顺序,就好了。


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3