cocos2d-x js在web和jsb環境下的兼容性差別

最近一個項目,web下測試正常,在jsb環境下bug多多,記錄解決方案以備後查html

1、cc.PhysicsSprite建立的物理精靈在添加到layer後,移動layer,在jsb環境下貼圖不隨着layer移動而移動html5

解決方案:將建立PhysicsSprite的精靈貼圖整合進一張大圖中,使用SpriteBatchNode加載,將建立的sprite添加進SpriteBatchNode中web

this.spriteSheet = new cc.SpriteBatchNode(res.sltq0_png);測試

var ballSprite = new cc.PhysicsSprite(resTexture.ball_png);this

this.spriteSheet.addChild(ballSprite,100);htm

2、cc.PhysicsSprite建立的物理精靈在jsb下沒法經過runAction的方式進行moveTo、moveBy、rotateXX等blog

解決方案:PhysicsSprite物理精靈貌似沒法直接經過runAction的方式位移或是旋轉(不涉及位置改變的cc.flipX等操做是能夠的)。若是是沒法旋轉,能夠經過設置ip

body的角速度解決body.setAngVel(10)。涉及改變位置的action能夠經過定時器的方式折中實現開發

3、cc.PhysicsSprite建立的物理精靈在jsb下沒法經過setPositionX或setPositionY修改位置get

解決方案:(吐血的bug)物理精靈沒法單一的修改某一個軸的座標即經過setPositionX或setPositionY修改位置,不理解爲什麼會出現這樣低級的bug,能夠經過

sprite.setPosition(cc.p(newX,newY))或是直接設置body修改body.setPos(cc.p(newX,newY));

4、按照官方API:schedule(callback, interval, repeat, delay, key)設置定時器,5個參數全傳入時在web下沒問題,傳入第5個參數key時在jsb下定時器不生效。

解決方案:尼瑪吐血三升啊,廢話一下,以前參照《Cocos2d-js開發之旅》這本書關於定時器的章節作了一個不變慢的定時器,當時按照書中的例子全部的定時器都沒有傳key這個參數,

我當時將這個不變慢的無限執行的定時器附加在gameLayer上,由於業務須要又在gameLayer上用了一個scheduleOnce的定時器,結果scheduleOnce執行完後直接把個人無限執行定時器也給

取消了(web環境會出現,jsb環境不存在這個現象),最後參照API傳入了key這個參數解決問題,可是在jsb下,傳入key參數會讓定時器失效,因此,若是在web環境下,最好傳入key參數,jsb環境不要傳入key參數。

 

本文地址:http://www.cnblogs.com/wangjiajun/p/4737232.html 

相關文章
相關標籤/搜索