Android裝置 cocos2dx 骨骼動畫註冊事件播放音效,退到後台再返回黑屏問題

來源:互聯網
上載者:User

標籤:

最近遇到一個cocos2dx 骨骼動畫註冊事件播放音效,在骨骼動畫播放的時候,按HOME鍵退到案頭,再次開啟遊戲的時候,會黑屏。

解決辦法如下,可能不是太完美,至少解決了大部分問題。

1.在org.cocos2dx.lib下的 Cocos2dxRenderer.java 中添加native方法

public static native void setIsPause(boolean isPause);

2.在Cocos2dxRenderer.java對應的Java_org_cocos2dx_lib_Cocos2dxRenderer.cpp中添加對應的方法

JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_setIsPause(JNIEnv* env, jobject thiz, jboolean ispause) {        CCDirector::sharedDirector()->setAndroidPause(ispause);    }

3.在CCDirector.cpp中添加setAndroidPause用來標記是否已經暫停

//設定暫停狀態void CCDirector::setAndroidPause(bool isPause){    m_bAndroidPaused = isPause;}//擷取暫停狀態bool CCDirector::getAndroidPause(){    return m_bAndroidPaused;}

4.在org.cocos2dx.lib下的Cocos2dxActivity.java中的onPause添加 1 步驟的方法

@Override    protected void onPause() {        Cocos2dxRenderer.setIsPause(true);        super.onPause();        Cocos2dxHelper.onPause();        this.mGLSurfaceView.onPause();    }

5.在CCTextureCache.cpp的 VolatileTexture::reloadAllTextures() 方法中添加一行代碼,用來恢複暫停狀態

void VolatileTexture::reloadAllTextures(){    isReloading = true;    CCLOG("reload all texture");    ... ...//此處省略中間內容    isReloading = false;    //最後一行將暫停設定為false    CCDirector::sharedDirector()->setAndroidPause(false);}

6.播放音樂時候判斷一下是否是暫停狀態還沒有恢複過來 SimpleAudioEngine.cpp中

unsigned int SimpleAudioEngine::playEffect(const char* pszFilePath, bool bLoop){    if(CCDirector::sharedDirector()->getAndroidPause())         return 0;    std::string fullPath = getFullPathWithoutAssetsPrefix(pszFilePath);    return playEffectJNI(fullPath.c_str(), bLoop);}

 

Android裝置 cocos2dx 骨骼動畫註冊事件播放音效,退到後台再返回黑屏問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.