js 在cocos js怎样检测action动画停止?

Cocos2dx+lua合适还是Cocos2dx+js合适?
开发cocos2dx手游Cocos2dx+lua合适还是Cocos2dx+js合适
按投票排序
目前JS风头似乎超越一切,所以我一直在纠结,到底是使用JSBinding还是LuaBinding。我找了一些资料。如果把下面的资料看完,相信每个人心里都会自有分辨。不愿看资料的,可以跳过直接看我的选择。下面说说我的分析,不一定正确。再说一遍,把上面的资料全部认真看完,你一定会有一个对你来说正确的选择。就我的感觉,虽然王哲说JS binding和Lua binding会并重发展,但我认为对于cocos2d-x团队来说,应该是偏向于JS。从现在cocos2d-html5的频繁更新就能看出来了。不过cocos2d-x是开源的引擎,即使官方团队不重视(或者相比JS而言不够重视),也依然有优秀的实现 (
) 。JS和Lua语言本身的优势(性能、语法、特性、 学习曲线、熟练程度),上面已经说了很多,我提供的资料中也有许多深入的讨论。我个人认为这两种语言性能上的差异并不是我选择的主要原因,学习曲线也不是。我没用过Lua,JS能写点东西。但我并不在意学习Lua “浪费” 的那两天时间。从 比较,Lua binding和JS binding帖数差别不大,JS略多,毕竟现在JS在流行程度上更强一些。比较最近的,会发现JS的相关修改更多一些。而且比较有趣的是,JS的修改有许多是BUG fix,而Lua的修改就只是feature。这是不是从侧面说明了,Lua Binding目前更加稳定呢?稳定是多重要的特性啊!JS Binding最大的优势,我认为就是游戏可以直接通过cocos2d-x html5移植到网页了。但我看过
之后,真的感觉到是无法接受那种性能。即使抛开 手游是否需要开发一个网页版本 这种运营问题不谈,运营的同学也一定不希望开放一个这样的HTML5玩家吐槽专版。我的选择,已经很明确了,就是Lua。各位提到的IDE问题、调试问题等等,我只能再想办法去解决。我相信即使我选了JS,碰到的此类问题也不会比Lua更少。上面提到的资料中有人讲到了cocos2d-x lua的IDE和调试,应该是个正确的思路。这个游戏完成之后,JS Binding应该成熟了(以现在的速度,应该会很快),到那时再考虑也不迟。
目前cocos2d-x团队确实是在同时全力支持JavaScript和Lua绑定,并不存在哪个是亲儿子的问题。语言之争由来已久,很多优秀的程序员也一直在乐此不疲地为自己所坚定选择的语言辩护,这是人之常情,也是热爱技术的人们必备的特质之一。作为工具开发方,不应该有孰优孰劣的立场,而是应当为用户的利益考虑。先说我自己的结论,再简单进行解释:今天我们公司内部的开发,基本都选用了JavaScript binding,没有什么游戏选用Lua binding;如果要开发属于短平快的比较小的游戏,个人建议使用Lua;如果研发周期长一点,而且需要后面持续维护和更新,个人建议用JavaScript binding。Lua的优点很多,因为上面廖大和其他几位都提及了,就不一一赘述了。魔兽世界的插件丰富多彩,很多有端游积累的公司都很喜欢使用Lua进行开发,这也是为什么我们今天看到不少端游公司在转手游的时候,都坚定地倾向选择使用Cocos2d-x的Lua绑定。而我们在Cocos2d-x内部,从最初网龙贡献Lua绑定支持,到后面廖大的支持,到现在建立专门的团队进行Lua的维护,团队对于Lua绑定的重视是有目共睹的。对于Javascript,这里不提及语法的好恶、语言特性优劣等,只谈谈我们在Cocos2d-x JavaScript Binding和Cocos2d-HTML5上都做了什么:首先,虽然Lua我们也建立了一个专门的团队支持,加上有廖大等高手不断贡献代码,但是的确在JavaScript部分,因为既要顾及Cocos2d-HTML5(林顺主抓的团队)又要顾及Cocos2d-x JavaScript Binding,同时还要考虑API的一致性,因此这个团队的人数是多过Lua binding的,而且我们后面会邀请更多高手参与。其次,因为公司内部项目要使用Cocos2d-x的JavaScript Binding,因此有一个“填坑”的过程,所以在对实际问题的支持和解决上,我们自己做JS的事儿要接地气得多。因此当前大家看到的“坑”,我们内部肯定也会遇到,但是肯定要填过去并贡献回Cocos2d-x的js binding让大家无需再“踩”。不过这需要一个逐步的过程,因此需要做短期快速开发的项目不如用Lua来得省心。第三就是CocosStudio这套编辑器,我们是要求必须内部使用的(我们内部使用的无论引擎版本还是工具版本,都是和发出去的版本完全一致的),因此对于JS的支持也是我们内部的重要要求。我看了上面大家的一些关注焦点,主要集中在安全性、效率、嵌入第三方SDK等方面,这些方面因为我们内部开发也会涉及,因此在不远的未来,我们的开发成果也都会回馈给Cocos2d-x开源社区。我们推进Cocos2d-x游戏引擎,一贯的风格都是自己探坑,再把解决问题后的工具对外提供。使用不完善的工具和框架进行开发,对于产品开发团队来说是需要很大的勇气,也面临非常大的压力的。如果不是我们自上而下的强势推进,以回馈行业为主要目标,我相信很少有游戏研发公司会这么干,因为这样对于团队信心也有不小的风险。举个小例子,在捕鱼达人2开发的时候,我们就硬要求团队使用当时还非常不成熟的Cocos2d-x 2.0 alpha版本开发,产品研发的压力非常大,既要按时完成项目,又要面临很多的引擎bug的修改。但是经历了一系列考验,团队熬了无数个日夜,在游戏正式推出的时候,Cocos2d-x 2.0引擎的坑也被我们填的差不多了,所以没什么悬念,一放出来其他的开发者也就很自然地接受了。目前Lua binding是相对上手比较容易的,很容易获得开发者的好感,不过很多时候技术方案选了之后再改也是挺痛苦的一个过程,因为无法得到较多积累。而我们之所以非常重视JavaScript,是和这张图关系很大的:(()不仅仅是因为语法或语言特性,而是因为我们很推崇“一次编写,多平台运行”的理念,而Cocos2d-x的JS binding + Cocos-html5正好符合一次编写,既可以跑成Native App还可以跑成Web App。王哲最爱说的一句话是“无社区,不开源”,其实我们也希望大家都尽力回馈Cocos2d-x这样的开源社区,当然作为使用者,选择一个靠谱的方案是必须的,不过我相信和技术提供方共同前行,也会是受益最大的。不好意思再补充一点:目前我们使用Cocos2d-x JS Binding的开发经验是,使用Cocos2d-HTML5做游戏的开发和调试(用Chrome或者Safari或者FireBug都可以)的80%-90%的工作,然后需要在手机上进行测试的时候把js代码放到手机版的工程里。很方便,对策划来说在网页上做调整也更加容易。
针对楼上几点,我作为使用过jsbinding的开发者做一下个人的见解。1.js的效率,这点必须承认,lua比js要快。但这个是要在脚本做密集计算的时候才会感觉到,大部分时间下游戏的流畅度取决于引擎的性能,这点lua和js都是基于cocos2d-x,大家都一样,其余的日常游戏逻辑lua和js速度几乎没有什么分别,退一步将,就算有js速度慢的功能,也可以放到C++去做,但是到目前为止还没有。2.安全性。js在代码混淆以后再进行bytecode转换已经最大程度上保证了代码的安全性,就算破解了bytecode,还有代码混淆做保证。如果这两层你都还担心,那确实没什么可说的了,恭喜你,你的游戏这么受欢迎。3.C++/C交互,现在cocos2d-x有自动绑定js的框架,不过我一般用手动绑定,手动绑定虽然略显繁琐,但是并不困难,况且大部分的引擎的功能已经绑定好了,我们要做的只是项目需要用的一些扩展功能的绑定,平台接入的SDK交互可以通过一个通用接口绑定就ok。------------------------------------------------上述几点总结下js几个缺点:相比lua的效率问题,js解析器很庞大,想二次编写js解析器,甚至看懂的你可能需要花比较大的精力。下面来说说js的优点:1.面向对象,虽然1楼廖大说了,lua也可以面向对象,可能我见识不多,现在用lua写的,很少用面向对象的,但是js中一切皆为对象,唯一的缺点是没有继承,调用父类方法等原生方法,这些需要用原型链来模拟实现,好在cocos2d-jsbinding已经帮我们实现了继承等功能,实际用的时候完全可以想面向对象语言去实现类的继承,重载,重写,父类调用等功能。2.调试,这个我觉得是js最优秀的地方,cocos2d-x和cocos2d-h5的API一致可以使得在网页上调试完成已经直接在手机中运行,网页调试可以debug,打断点,看当前作用域数据,等等强大的功能。同时智能IDE的支持(webstorm,aptana)可以对自定义的库,引入的脚本做完整的智能提示,大大加快了编码的速度。3.网页版,虽然这个功能现在看起来可以可无,但是一旦已经发展起来,也是不可小视,现在在做手机app的同时,也做了网页版,并且可以在手机浏览器中运行,这一切都是同一套代码。4.下载体积,同等代码量的js通过压缩混淆可以生成一个文件,生成的脚本容量大小比lua更小,一款手游的js逻辑编译成bytecode一般只有在600k-1m之间,lua脚本基本上都大于1M,这就意味着玩家在线更新时候需要花更长的时间。最后想说的是js-binding才刚刚发展,相比lua来讲需要更多的人尝试,我目睹了jsbinding3个月的快速发展,现在我们基于jsbinding的商业策略游戏(ios,android)已经提交91内测,相信马上就会和玩家见面,也希望更多的开发者能够去勇于尝试这门新技术,而不是要非得等别人做出产品来。
2014.02更新:请放心选择 Lua 吧。触控已经收购了 quick-cocos2d-x,2014年肯定会大力强化 cocos2d-x 的 Lua 支持。----我个人肯定是推荐 Lua 的,原因如下:1. 运行效率:Lua 的性能在各种测试里都比 JavaScript 快不少。而移动设备上存在不支持 JIT 的情况(未越狱的 iOS 设备),Lua 对比 JavaScript 的性能优势就更明显。2. 安全性:现在 cocos2d-x 使用 LuaJIT 来执行 Lua,所以可以把 Lua 代码编译为字节码再打包到游戏里。由于 LuaJIT 的字节码是高度优化过的,所以目前还没有反编译工具。而 JS 虽然也可以用字节码,但从目前的情况看还达不到 LuaJIT 的安全性。3. 与 C/C++ 的交互:Lua 原本就是作为嵌入式语言来设计的,所以天然和 C/C++ 很容易交互。JS 这方面是个劣势。4. 与 Java/Objective-C 的交互:不管是 quick-cocos2d-x 里提供的 luaoc/luaj 模块,还是 wax, luajava 这些开源项目,都让我们可以绕过 C/C++ 层实现 Lua 和 Java/Objc 的交互。这个优势在游戏发行阶段,集成各种第三方 SDK 时绝对会节约巨量时间!!!----------------------------------------当然,cocos2d-x 目前明显是在主推 JS 的解决方案,因为 JS 可以跨越移动设备、桌面的界限,实现一套程序跑任意平台。不过我个人认为以当前 HTML5 的发展情况,对于要强调体验的游戏来说,HTML5 还要一些时间。从目前的市场情况来说,Lua 明显是更理性的选择:成熟、安全性高、众多大作采用。----------------------------------------前面提到 JS 更容易面向对象,我想可能是因为大家对 Lua 还不够了解造成的错觉。实际上,Lua 和 JS 实现面向对象的机制几乎是一样的。JS 基于 prototype,Lua 基于 metatable,在我看来仅仅是名字不同而已。----------------------------------------最后,不得不向大家推荐 quick-cocos2d-x 这个基于 cocos2d-x + Lua 的扩展版。quick 在 cocos2d-x + Lua 的基础上提供了诸多简化开发的扩展功能,以及开发框架。quick-cocos2d-x 中文站:
纯属个人观点1
Unity3d支持c#和js开发,cocos2d-x支持c++、js、lua开发。看到了么,当前最流行的两大手游引擎都有js,而且Unity3d和Cocos2d-x官方好像都更偏重js,从这一点看,js未来前景很大;2 如今,大家都是高配置手机的时代,js运行效率无需过多担心;3 js是真正的编写一次,处处运行;假如未来html5大行其道,选择js刚好可以顺势而起;4 另外一点,开发工具IDE的好坏和效率,cocos2d-js有不错集成开发工具,lua这块倒是没发现顺手的ide;5 完善的cocos2d-js学习资料和教程,拿去吧博文系列——————————————游戏基础教程篇—————————————一 cocos2d-x editor工具下载和基础教程JS篇:二 cocos2d-x editor工具下载和基础教程Lua篇:三 cocos2d-x editor简介视频:——————————————游戏项目实战篇—————————————四 cocos2d-x editor 项目实战--Flappy Bird (休闲益智类)flappy bird游戏源代码揭秘和下载后续---移植到苹果ios上 ——推迟——五 cocos2d-x editor 项目实战--PopStar (消除类)PopStar(消灭星星)游戏源代码下载、分析及跨平台移植---第五篇(移植) ——将写——六 cocos2d-x editor 项目实战--FruitNinja (切东西类)Fruit Ninja(水果忍者)游戏源代码下载、分析(中)Fruit Ninja(水果忍者)游戏源代码下载、分析(下)——————————————整理项目—————————————七 cocos2d-x editor 项目实战--MoonWarriors (飞行射击类) ——代码先发布——八 cocos2d-x editor 项目实战--FruitAttact(类粉碎糖果传奇消除游戏) ——代码先发布——九 cocos2d-x editor 项目实战--TestsJavascript ——代码先发布————————————————游戏系列计划—————————————十 cocos2d-x editor 项目实战--Doodle Jump (跳跃类)Doodle Jump (涂鸦跳跃)游戏源代码下载、分析 ——会写——十一 cocos2d-x editor 项目实战--Ski Safari (跑酷类)Ski Safari(滑雪大冒险)游戏源代码下载、分析 ——会写——
更新一下,自从ios 8开始支持webGL之后,我觉得js前景更好。原答案:以下针对cocos2d-x的脚本绑定:Lua的优点:可编译,效率高,跟c/c++/java/objective-c之间的相互调用较方便,在游戏业内久经考验。Lua的缺点:本身不直接支持面向对象,需要拐弯实现,不能发布html5。Javascript的优点:跟html5无缝集成,比Lua更容易实现面向对象,有Zynga在做小白鼠,目前cocos2d之父Ricardo和2dx团队都全力支持。Javascript的缺点:不能编译只能做混淆,效率不够高,跟c/c++/java/objective-c之间的相互调用不大方便,Javascript在游戏开发领域并无亮点。
& 而 JS 虽然也可以用字节码,但从目前的情况看还达不到 LuaJIT 的安全性。有做过试验么?你能反编译spidermonkey的字节码?这句话理论依据是什么?请附上具体的描述文档。谢谢。
我选择了lua,但是没有一个好的ide,没有一个好的调试工具,生产率正的很低。
从效率方面来说,编译成字节码的lua效率肯定比js高;从坑方面来说,目前lua几乎无太大的坑,js除非公司有牛人;从已经上线成功的产品来说,我叫MT、大掌门、龙之力量等等,都是cocos2dx+lua,js我是没有听说过有比较成功的产品;从入门方面,用lua,只要懂点程序的菜鸟,几天入门,一周搭界面;以我自己的经验来说,目前lua肯定比js合适,也是我们这样的小团队首选,还有现在廖大的quick-cocos2dx(详情请github),绝对爽歪歪,这些回答是基于本人有限的只是水平,仅供参考
推荐试试 coffeescript + cocos2dx js binding好处在于: - 非常丰富的第三方代码库 - coffeescript 统一语法风格适合团队开发 - 开发效率很高,很高,非常高
还是 cocos2dx + lua的比较多!
游戏制作,其实非常重要的一个环节是可视化编辑器,动画编辑器,UI编辑器,cocosbuilder扮演的正是这样角色,而cocosbulder有专门支持js:绑定成员变量,函数回调,乃至动画关键帧上的回调。其便利程度,用过c++绑定的,一定能理解。今后cocostudio会替代cocosbuilder,同时也会完美支持这些特性。
试试这款Lua编辑调试工具,不过是基于vs2012的:我们公司最初选型的时候(2年前),也考虑过js和lua的问题,比较现实的选择是lua,到底是有很多成功的案例(wow、网易、云风、gameloft),没有大的风险了。同时当时还担心10万行的代码,js vm是否能跑的起来而不爆掉(lua无需担心)。至于以后如果需要转型js,可以这样:找公司一个大牛,花1、2个月,把lua转js的技术难点都研究、整理出来,然后给团队培训半个月,现在年轻人学技术快,很快就可以转过来。
在安卓平台上开启Baseline编译之后JSBinding的速度有非常夸张的提升,目前的数据我们认为在安卓平台上JS的性能比Lua甚至更好。在安卓平台上开启Baseline编译之后JSBinding的速度有非常夸张的提升,目前的数据我们认为在安卓平台上JS的性能比Lua甚至更好。
我们的项目使用了+js。目前功能都是好的,但是如果下个项目的话,我会考虑+lua。目前主要觉得js语言过于灵活,如果规范不够可能导致代码不易维护。至于其它人所说的效率什么的,我觉得不是很重要,大头在渲染,都是C++的。PS:新的项目使用了Lua。我觉得是正确之选。Lua相较JavaScript有一个杀手级特性,那就是coroutine。因为游戏有很多需要依次播放的动画,特效啥的。这些大多不能依赖源生的Action来完成,使用coroutine就方便太多了。PS.PS:2015年再更新一下,如今H5比较热自然会有很多人乐意去选择JS。JS相对Lua也有自己优势的一面:有更多更好的IDE可以选择,开发debug也会更友好。但就目前而且,我不觉得面向手机开发的游戏能随便转成H5版,主要还是性能有问题。除非是那种非常轻量简单的小游戏。方便,高效的测试debug工具为JS加了许多分,所以我现在觉得JS和Lua都还好。
太傻逼了。。
为什么有这么多人找debug
不考虑过程,只看结果虽然回答支持JS占了多数,但事实,成功的作品几乎都是用LUA
目前来说 选择js方向无论是对开发者个人 或者公司都是更好的。
是时候采用js了,js统一大业【Cocos2d-x-js系列】利用动画缓存来复用动画 - 隴上煙雨劍 - 博客园
Powered by:
模板提供:
OnWalkClick:function(sender){
var sfLaoJun1=new cc.SpriteFrame(res.npc_laojun1,cc.rect(0,0,70,101));
var sfLaoJun2=new cc.SpriteFrame(res.npc_laojun2,cc.rect(0,0,70,101));
var sfLaoJun3=new cc.SpriteFrame(res.npc_laojun3,cc.rect(0,0,70,101));
var sfLaoJun4=new cc.SpriteFrame(res.npc_laojun4,cc.rect(0,0,70,101));
var sfLaoJunAll=new Array(sfLaoJun1,sfLaoJun2,sfLaoJun3,sfLaoJun4);
var amnLaoJun=new cc.Animation(sfLaoJunAll,0.05);
var action=cc.animate(amnLaoJun);
var sprite=new cc.Sprite();
sprite.setPosition(160,300);
this.addChild(sprite);
cc.animationCache.addAnimation(amnLaoJun,"LaoJun");
sprite.runAction(cc.repeatForever(action));
OnSpriteFrameCacheTesting: function (sender) {
amnLaoJun=cc.animationCache.getAnimation("LaoJun");
amtLaoJun=new cc.Animate(amnLaoJun);
sprite=new cc.Sprite();
sprite.setPosition(160,400);
this.addChild(sprite);
sprite.runAction(cc.repeatForever(amtLaoJun));
依然感谢张翼翔先生。
阅读(...) 评论()cocos2d x动画 无限重复的动画 如何销毁_百度知道
cocos2d x动画 无限重复的动画 如何销毁
我有更好的答案
在目标上停止掉就好了。比如:CCSprite * YourSprite =...CCRepeatForever* YourAction = ...YourSprite-&runAction(YourAction);YourSprite-&stopAction(YourAction);
加一个回调函数。
也可以直接暂停所有动作。
做一下任务,我不建议。~ ~ --
其他类似问题
为您推荐:
您可能关注的推广
cocos2d的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁主题 : 循环播放的动画停止后怎么在屏幕上删除
级别: 新手上路
UID: 317631
可可豆: 138 CB
威望: 116 点
在线时间: 53(时)
发自: Web Page
来源于&&分类
循环播放的动画停止后怎么在屏幕上删除&&&
transition.removeAction(action)这个语句是停止正在执行的动作,停止后怎么删除这个动画呢
级别: 论坛版主
UID: 42534
可可豆: 2859 CB
威望: 2127 点
在线时间: 955(时)
发自: Web Page
action 都是基于一个节点的 如果想停止后删除这个动画 就删除这个节点。
级别: 侠客
可可豆: 180 CB
威望: 150 点
在线时间: 107(时)
发自: Web Page
回 楼主(xumengfei) 的帖子
removeFromParentAndCleanup(cleanup)
偷心的海盗
级别: 论坛版主
UID: 332315
可可豆: 556 CB
威望: 357 点
在线时间: 119(时)
发自: Web Page
我就是我, 不一样的烟火。
级别: 新手上路
UID: 317631
可可豆: 138 CB
威望: 116 点
在线时间: 53(时)
发自: Web Page
谢谢。已经搞定,删除节点上的子对象node:removeChild(childNode)
关注本帖(如果有新回复会站内信通知您)
iPhone5的分辨率? 正确答案:
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版

我要回帖

更多关于 cocos js action 的文章

 

随机推荐