加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

quick-cocos2d-x 3.3rc0 与 2.2.5的区别(三)真机上设置横屏与

发布时间:2020-12-14 19:36:00 所属栏目:百科 来源:网络整理
导读:今天把样例编译的真机上,发现是横屏显示,我在模拟器上是竖屏显示的。按照2.2.5版本修改属性后还是没有改变,最后发现3.3rc0有所改动! 2.2.5版本,在真机上显示横屏与竖屏,只需在java层修改android:screenOrientation属性,竖屏:portrait;横屏: landsc

今天把样例编译的真机上,发现是横屏显示,我在模拟器上是竖屏显示的。按照2.2.5版本修改属性后还是没有改变,最后发现3.3rc0有所改动!

2.2.5版本,在真机上显示横屏与竖屏,只需在java层修改android:screenOrientation属性,竖屏:portrait;横屏:landscape;

wKioL1R22SThKf1YAACGuQrd4nU371.jpg

3.3rc0版本,多了如下代码:

wKiom1R22VfCJ5d0AAC1hMPzHKA553.jpg

因为这个导致修改android:screenOrientation属性无效了,nativeIsLandScape是个什么东西呢?在java层声明如下:

privatestaticnativebooleannativeIsLandScape();

这个函数是C++层实现的,在项目jni/hellolua/main.cpp里面可以看到如下代码:

extern"C"
{
	boolJava_org_cocos2dx_lua_AppActivity_nativeIsLandScape(JNIEnv*env,jobjectthisz)
	{
		returnConfigParser::getInstance()->isLanscape();
	}

	boolJava_org_cocos2dx_lua_AppActivity_nativeIsDebug(JNIEnv*env,jobjectthisz)
	{
#if(COCOS2D_DEBUG>0)
returntrue;
#else
returnfalse;
#endif
	}
}

在ConfigParser类里面可以看见如下代码:

if(objectInitView.HasMember("isLandscape")&&objectInitView["isLandscape"].IsBool())
{
_isLandscape=objectInitView["isLandscape"].GetBool();
}
ConfigParser::ConfigParser(void):
_isLandscape(true),_isWindowTop(false),_consolePort(CONSOLE_PORT),_uploadPort(UPLOAD_PORT),_viewName("TimberMan"),_entryfile("src/main.lua"),_initViewSize(WIN_WIDTH,WIN_HEIGHT)
{
}
boolConfigParser::isLanscape()
{
return_isLandscape;
}

以上代码可以知道,默认是横屏的;isLandscape这个属性是哪里来的呢?是项目文件夹里config.json里面的。

wKiom1R23PzBzX6LAAEZb5wftCY118.jpg

所以3.3rc0要设置横屏与竖屏需要修改config.json文件里的isLandscape属性。

就写这么多,期待下篇文章!

如有不足之处,请大家指出,一起交流成长!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读