jsb里出現的 Invalid Native Object的一次bug修復的思考


Cocos2d: jsb: ERROR: File /Users/dcx_JD/Documents/cocos2d-x-2.2.2/scripting/javascript/bindings/generated/jsb_cocos2dx_auto.cpp: Line: 4911, Function: js_cocos2dx_CCNode_removeFromParentAndCleanup

Cocos2d: Invalid Native Object

Cocos2d: JS: /var/mobile/Applications/XXXXXX/Documents/XXX/package/src/XXX/XXX/XXX/XXX:52:Error: Invalid Native Object

 

以上為bug報錯信息,出現Invalid Native Object這種情況,目前遇到的都是顯示對象造成的,此處流程是這樣:

在一個方法里創建一個動畫armature后,push到了一個數組,然后讓動畫播放指定的動作,等監聽到動畫的complete事件后,就讓armature.removeFromParent(true),

然后在最終的destory里,通過遍歷數組訪問到了這個armature對象,此時使用 armature.getParent() 或者 armature.removeFromParent(true)就會報Invalid native obejct的錯誤。

解決方法就是在動畫complete之后,僅僅removeFromeParent是不行的,還要在此時把armature 從數組中剔除,做到沒有任何地方對其有引用,從而直接銷毀掉,destory里其實就不再處理了

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM