quick-cocos2d-x 3.3rc0 與 2.2.5的區別(三)真機上設置橫屏與豎屏

    今天把樣例編譯的真機上,發現是橫屏顯示,我在模擬器上是豎屏顯示的。按照2.2.5版本修改屬性後還是沒有改變,最後發現3.3rc0有所改動!

    2.2.5版本,在真機上顯示橫屏與豎屏,只需在java層修改android:screenOrientation屬性,豎屏:portrait;橫屏:landscape;

wKioL1R22SThKf1YAACGuQrd4nU371.jpg

        3.3rc0版本,多瞭如下代碼:

        wKiom1R22VfCJ5d0AAC1hMPzHKA553.jpg

        因爲這個導致修改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裏面的。

wKiom1R23PzBzX6LAAEZb5wftCY118.jpg

    所以3.3rc0要設置橫屏與豎屏需要修改config.json文件裏的isLandscape屬性。

    就寫這麼多,期待下篇文章!

    如有不足之處,請大家指出,一起交流成長!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章