android项目中纹理变成黑块,求解

我们项目中打算嵌入cocos2dx,用来做动画处理,现在功能比较较简单,就是获得一个plist动画,然后让cocos播放,我现在是这样处理的,
1.activity启动时就
auto scene = HelloWorld::createScene();
// run
director->runWithScene(scene);
2.activity接收事件。调用jni,
jni里
const char *url = env->GetStringUTFChars(url_, 0);
HelloWorld::play(director->getRunningScene(), url );

3.HelloWorld::play中
播放这个url的动画,( 现在是anim.plist)
auto cache = SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile(“anim.plist”);

	Vector<SpriteFrame*> vec;
	char name[15];
	memset(name, 0, 15);

	for (int i = 0; i < 20; i++) {
		sprintf(name, "anim%04d", i);
		vec.pushBack(cache->getSpriteFrameByName(name));
	}

	Animation *animation = Animation::createWithSpriteFrames(vec, 0.1f);
	Animate *animate = Animate::create(animation);

	auto sprite = Sprite::create();
	scene->addChild(sprite);
	sprite->setPosition(200, 200);
	auto action = Animate::create(animation);
	sprite->runAction(animate);

结果很悲剧,这个动画是一个黑块。
这时我back退出app,再次进入动画又有了。
请问这时何解,苦恼

同样的方法,在scene中添加按钮,点击事件 调用HelloWorld::play就是正常的,为什么呀

解决了
要在open el 的线程里面调用
Cocos2dxGLSurfaceView.getInstance().queueEvent(new Runnable() {
@Override
public void run() {
//todo 调用jni
}
});

本来就有:
mCocos2dxActivity.runOnGLThread(new Runnable() {
@Override
public void run() {
Cocos2dxEditBoxHelper.__editBoxEditingChanged(index, s.toString());
}
});

另外, COCOS2DX回调回来的要在:
mCocos2dxActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
Cocos2dxEditBox editBox = mEditBoxArray.get(index);
if (editBox != null) {
mEditBoxArray.remove(index);
mFrameLayout.removeView(editBox);
Log.e(TAG, “remove EditBox”);
}
}
});

1赞