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 

相关文章
相关标签/搜索