温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-08-04 08:50:38 来源:网络 阅读:2397 作者:落魄码农 栏目:游戏开发

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

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

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

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

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

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

private static native boolean nativeIsLandScape();

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

extern "C"
{
	bool Java_org_cocos2dx_lua_AppActivity_nativeIsLandScape(JNIEnv *env, jobject thisz)
	{
		return ConfigParser::getInstance()->isLanscape();
	}

	bool Java_org_cocos2dx_lua_AppActivity_nativeIsDebug(JNIEnv *env, jobject thisz)
	{
#if (COCOS2D_DEBUG > 0)
        return true;
#else
        return false;    
#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)
{
}
bool ConfigParser::isLanscape()
{
    return _isLandscape;
}

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

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

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

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

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI