1
CCTexture2D *t = new CCTexture2D();
t->initWithData(imageData, kCCTexture2DPixelFormat_RGBA8888, sprite->getTexture()->getPixelsWide(), sprite->getTexture()->getPixelsHigh(), sprite->getTexture()->getContentSize());

CCSprite *ret = CCSprite::createWithTexture(t);

このようにして、タイトルとスプライトのような現象だけが作成されます。

CCSprite *Beach の水の効果をスプライトに設定して、画像をカスタマイズします。iOS、Android、問題なくonPause()→onResume(a)経由でRet画像が黒くなる

それを解決する方法は?

4

2 に答える 2

1

ファイルから読み込まれなかったスプライトは、データで初期化された CCTexture2D または CCRenderTexture のいずれかで、再開後に黒くなります。

最も簡単な解決策: 動的テクスチャの使用をやめ、ファイルからすべてのテクスチャをロードします。

回避策: cocos2d::CCApplication サブクラスに配置された Resume イベント コールバック - メソッド applicationWillEnterForeground() です。このメソッド内のすべてのテクスチャを手動でリロードできます。たとえば、子テクスチャをリロードする仮想メソッドを持つ独自のインターフェイス A と、A のグローバル リストを保持するマネージャー クラス B を作成します。A は、コンストラクターで B に自身を登録し、デストラクタで登録解除します。

動的テクスチャを使用する (つまり、ファイル表現を使用しない) 各クラスで、インタフェース A を実装し、メソッドをオーバーライドして、すべての動的テクスチャをリロードします。

于 2013-05-24T10:54:38.110 に答える
0

私も同じ問題に直面しました。CCPlatformMacros.h、Cocos2dxGLSurfaceView.java、および main.cpp(jni フォルダー内) を変更する必要があります。

詳細な変更については、https://github.com/cocos2d/cocos2d-x/pull/2384を参照してください。

于 2013-05-28T13:16:02.207 に答える