原先用cocos2d-x做了一个应用,不得不说挺费劲的,因为很多效果都需要自己写,关键是自己写得还不是很流畅。于是逐步改成原生的。
最基本的问题是sceneA-->activityB->cocos2dActivity->sceneC这种切换。因为android与coco2d用的不是同一套画布。切换过程中会出现sceneA->activityB->cocos2dActivity->sceneA->sceneC这种情况。我的方式是做了个过渡的场景sceneD,这样就可以sceneA->sceneD->activityB->cocos2dActivity->sceneD->sceneC。这样起码不会给人一种我明明点的是下一个操作,却要先显示上一个界面再显示下一个界面的情况。
期间存在两个问题:
从sceneD切换到activityB的时机应该是在sceneD在前端绘制完成后进行的。然而coco2d并没有提供这样的接口。实际上在onEnter里面只是进入,而非绘制完成。所以要做个延时。
从activityB切换回来时,coco2dActivity由于是个singleInstance,所以传参需要重写onNewIntent方法。但是要注意这个函数是在onResume之前执行的,这时cocos2d director还没有被唤醒,因此需要在onNewIntent时将参数保存,在onResume后切换scene,同样,这里也要做个延时。