過關場景跳轉
雷哥啊,你那個過關后的場景跳轉怎么弄的?你說休息時間改的,直接調用toGameScene方法,看到效果是怪物死了后又復活了,這個是怎么弄的,,我在判定怪物死完后,調用toGameScene,當怪物死了程序就崩了。。。應該是那個地方沒處理,怎么弄的啊求救雷哥??!
雷哥啊,你那個過關后的場景跳轉怎么弄的?你說休息時間改的,直接調用toGameScene方法,看到效果是怪物死了后又復活了,這個是怎么弄的,,我在判定怪物死完后,調用toGameScene,當怪物死了程序就崩了。。。應該是那個地方沒處理,怎么弄的啊求救雷哥??!
2015-08-18
舉報
2016-11-19
我寫的也是同樣崩,最后我分析大概是因為ControlLayer::purge()將ControlLayer類的所有成員都釋放了,tsm的內存也被回收掉了,所以導致ControlLayer::update函數(shù)中再tsm->toGameScene();就崩了。
然后:
1,在DataManager里加入成員:SceneManager* sceneManager;
2,在AppDelegate::applicationDidFinishLaunching()中創(chuàng)建完SceneManager對象之后加上一句:DataManager::getInstance()->sceneManager = sceneManager;
3,在ControlLayer::update中用DataManager::getInstance()->sceneManager->toGameScene();代替tsm->toGameScene();
我這么改肯定是不專業(yè),但是這么一折騰不崩了。
2016-11-14
這個問題困擾了我好久,最后大概弄清楚了原因。應該是schudule方法的bug吧,unSchedule之后還會執(zhí)行一幀update方法。這時問題就來了:在上一幀中已經釋放了ControlLayer中的所有資源,所以這一幀的update方法中會報各種野指針錯誤(EXC_BASD_ACCESS)。
順序大概是這樣(ControlLayer1:upadte(釋放資源、停止定時器) -> 創(chuàng)建ControLayer2 ->?ControlLayer1:upadte(崩))
原因嘛,就是這樣,解決方法我也太不會。我是在update開始加一句判斷,if(indexLevel != DataManager::getInstance()->getLevelIndex()) return; (indexlLevel 在init方法里初始化為DataManager里的level)。雖然做法很差,但也達到效果了
2015-10-03
我也是同樣的問題,toGameScene的第一句執(zhí)行了就崩了,好像是關于內存的問題。不知道怎么解決。
2015-09-17
我也是,第一關打死牛高清之后程序執(zhí)行場景跳轉就掛掉了