cocos2d-x js在web和jsb环境下的兼容性差异

最近一个项目,web下测试正常,在jsb环境下bug多多,记录解决方案以备后查

一、cc.PhysicsSprite创建的物理精灵在添加到layer后,移动layer,在jsb环境下贴图不随着layer移动而移动

解决方案:将创建PhysicsSprite的精灵贴图整合进一张大图中,使用SpriteBatchNode加载,将创建的sprite添加进SpriteBatchNode中

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

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

this.spriteSheet.addChild(ballSprite,100);

二、cc.PhysicsSprite创建的物理精灵在jsb下无法通过runAction的方式进行moveTo、moveBy、rotateXX等

解决方案:PhysicsSprite物理精灵貌似无法直接通过runAction的方式位移或是旋转(不涉及位置改变的cc.flipX等操作是可以的)。如果是无法旋转,可以通过设置

body的角速度解决body.setAngVel(10)。涉及改变位置的action可以通过定时器的方式折中实现

三、cc.PhysicsSprite创建的物理精灵在jsb下无法通过setPositionX或setPositionY修改位置

解决方案:(吐血的bug)物理精灵无法单一的修改某一个轴的坐标即通过setPositionX或setPositionY修改位置,不理解为何会出现这样低级的bug,可以通过

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

四、按照官方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

时间: 2024-10-14 12:55:26

cocos2d-x js在web和jsb环境下的兼容性差异的相关文章

Unicode环境下的字符差异

我总是对我的字符串使用_T()宏,这是为了让我的代码至少有Unicode的意识,当然,关于Unicode的话题不在这篇文章的讨论范围._T()宏在8位字符环境下是如下定义的: #define _T(x) x // 非Unicode版本(non-Unicode version) 而在Unicode环境下是如下定义的: #define _T(x) L##x // Unicode版本(Unicode version) 所以在Unicode环境下,它的效果就相当于: s.Format(L"%d"

【笔记JS/HTML/CSS】ubuntu环境下的sublime text2 安装 zenCoding

刚接触web编程的时候就被老师安利了sublime text2 这个文本编辑器,后来发现它真的挺好用的,无论是windows还是ubuntu,都可以很简单地下载安装(到官网,免费哦),三分钟内就搞定了,简直懒人最爱. 还想更懒的话,最近又发现了一个插件ZenCoding,查了一下资料真的很厉害的样子.貌似在2010年的时候就有了,现在改名Emmet sublime装上它之后就可以酱紫: 先输入一行代码如下 再按下tab键,就如下图展开了 因为不想重新学习jade语法,投奔ejs+zencodin

【前端福利】用grunt搭建自动化的web前端开发环境-完整教程

jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过.但是不会熟练使用grunt,那你就真的真的真的out了(三个"真的"重复,表示重点).至于grunt的作用,这里不详细说了,总之你如果做web前端开发,你一定要用grunt.还有一点,它完全免费,没有盗版.既强大又免费的东西,为何不用? 当然了,你如果你能找到更好的替代grunt的其他工

Web 前端开发环境

创建 Web 前端开发环境 Web 前端开发涉及多种工具,这里将常用工具的安装和配置进行说明,提供了详细的说明,为后继的开发创建一个坚实的基础. 本文介绍的工具有:NodeJS, NPM, Bower, Git 和 Grunt. 1. 安装 NodeJS 和 NPM 一切从 NodeJS 开始吧,官方网址:https://nodejs.org/ NodeJS 既可以为我们提供一个服务器端的 Web 环境,又可以提供一个命令行的工具,既然做 Web 前端开发,那就是我们必然选择的工具了. 为了解决

用grunt搭建自动化的web前端开发环境

用grunt搭建自动化的web前端开发环境 jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过.但是不会熟练使用grunt,那你就真的真的真的out了(三个“真的”重复,表示重点).至于grunt的作用,这里不详细说了,总之你如果做web前端开发,你一定要用grunt.还有一点,它完全免费,没有盗版.既强大又免费的东西,为何不用? 当然了,你如果你

用grunt搭建自动化的web前端开发环境-完整教程

jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过.但是不会熟练使用grunt,那你就真的真的真的out了(三个“真的”重复,表示重点).至于grunt的作用,这里不详细说了,总之你如果做web前端开发,你一定要用grunt.还有一点,它完全免费,没有盗版.既强大又免费的东西,为何不用? 当然了,你如果你能找到更好的替代grunt的其他工具也是可以

快速使用node.js进行web开发

首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将node.js语言特性讲解完之后,又从一个项目角度带领读者使用node.js学习web开发.相信这是一个比较好的学习模式和过程.由于这本书是2012年出的,书中的一个web教学项目是开发一个微博.从2012到现在,node.js及其生态环境发生了很大改变,所以关于该书的学习如果照着书本显然是过于陈旧的.到目前为止,node.js的web开发框架已经升级到了Express4.12.1,对于Mong

VisualStudio环境下的Web前端开发经验总结(css,javascript)

vs是我最熟悉的开发环境,但使用做web前端开发时时,碰到一些问题: 1.一个文件几万行代码,如何有效的组织代码,才能快速的找到某个模块? 2.js代码如何使用#region方式折叠? 3.js代码的intellisence有些情况下会失效,痛苦. 4.js选择何种类定义,有效的实现信息封装 5.如果高效的写css. 经过摸索,总结出如下的经验.(注:vs 的版本是2012) 一.安装vs插件,解决问题1.2 插件1:Web Essentials,主要的好处是支持js的代码折叠(#region.

Express 4.x Node.js的Web框架----《转载》

本文使用node.js v0.10.28 + express 4.2.0 1 Express概述 Express 是一个简洁而灵活的node.js的MVC Web应用框架,提供一系列强大特性创建各种Web应用. Express 不对 node.js 已有的特性进行二次抽象,我们只是在它之上扩展了Web应用所需的功能. Expressd底层由Node.js的HTTP模块实现. 1.1 express 4.x 安装 express 4.x与之前的版本有了许多的变化,书里和网上的很多方法都不再适用.学