十 手游开发神器 cocos2d-x editor 之触摸事件

这一节 我将实现让小怪物跟随我的触摸方向移动,同时触摸的地方产生一个四周发散的效果

 

效果如下:

 

 

代码下载:http://www.kuaipan.cn/file/id_25348935635744782.htm?source=1

 

 

打开MainLayer.js,把onDidLoadFromCCB函数修改如下,让触摸可用;

 

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. MainLayer.prototype.onDidLoadFromCCB = function () {  
  2.     if (sys.platform == 'browser') {  
  3.         this.onEnter();  
  4.     }  
  5.     else {  
  6.         this.rootNode.onEnter = function () {  
  7.             this.controller.onEnter();  
  8.         };  
  9.     }  
  10.   
  11.     this.rootNode.schedule(function (dt) {  
  12.         this.controller.onUpdate(dt);  
  13.     });  
  14.   
  15.     this.rootNode.onExit = function () {  
  16.         this.controller.onExit();  
  17.     };  
  18.   
  19.     this.rootNode.onTouchesBegan = function (touches, event) {  
  20.         this.controller.onTouchesBegan(touches, event);  
  21.         return true;  
  22.     };  
  23.   
  24.     this.rootNode.onTouchesMoved = function (touches, event) {  
  25.         this.controller.onTouchesMoved(touches, event);  
  26.         return true;  
  27.     };  
  28.     this.rootNode.onTouchesEnded = function (touches, event) {  
  29.         this.controller.onTouchesEnded(touches, event);  
  30.         return true;  
  31.     };  
  32.     this.rootNode.setTouchEnabled(true);  
  33. };  


在文件底部加入 触摸开始,触摸移动,触摸结束函数;

 

 

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. MainLayer.prototype.onTouchesBegan = function (touches, event) {  
  2.     var loc = touches[0].getLocation();  
  3. }  
  4.   
  5. MainLayer.prototype.onTouchesMoved = function (touches, event) {  
  6.     cc.log("onTouchesMoved");  
  7. }  
  8.   
  9. MainLayer.prototype.onTouchesEnded = function (touches, event) {  
  10.     cc.log("onTouchesEnded");  
  11. }  

 

 

再创建小怪物的根据点(x,y)移动的函数;

 

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. MainLayer.prototype.monsterMove = function (x, y) {  
  2.     this.monster.stopAllActions();  
  3.     cc.AnimationCache.getInstance().addAnimations("Resources/snow_frame.plist");//添加帧动画文件  
  4.     var action0 = cc.Sequence.create(cc.MoveTo.create(5, cc.p(x, y)));  //向前移动  
  5.     var actionFrame = cc.Animate.create(cc.AnimationCache.getInstance().getAnimation("monster"));   //获取帧动画  
  6.     var action1 = cc.Repeat.create(actionFrame, 90000);  
  7.     var action2 = cc.Spawn.create(action0, action1); //同步动画  
  8.     this.monster.runAction(action2);  
  9. }  


触摸结束时,加入monsterMove函数,这时触摸一个点,小怪物会立刻移动到该位置;

 

 

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. MainLayer.prototype.onTouchesEnded = function (touches, event) {  
  2.     cc.log("onTouchesEnded");  
  3.     var loc = touches[0].getLocation();  
  4.     this.monsterMove(loc.x, loc.y);  
  5. }  


按照之前博客教过的在particles目录下创建一个发散粒子,现在在触摸的地方加入发散效果,效果周期为3秒,3秒后消失;

 

 

再次打开MainLayer.js,加入创建粒子的函数

 

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. MainLayer.prototype.createParticle = function (name, x, y) {  
  2.     var particle = cc.ParticleSystem.create("Resources/particles/" + name + ".plist");  
  3.     particle.setAnchorPoint(cc.p(0.5, 0.5));  
  4.     particle.setPosition(cc.p(x, y));  
  5.     particle.setPositionType(1);  
  6.     particle.setDuration(3);  
  7.     this.rootNode.addChild(particle);  
  8. }  


同时在触摸结束时加入粒子函数;

 

 

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
 
  1. MainLayer.prototype.onTouchesEnded = function (touches, event) {  
  2.     cc.log("onTouchesEnded");  
  3.     var loc = touches[0].getLocation();  
  4.     this.monsterMove(loc.x, loc.y);  
  5.     this.createParticle("around", loc.x, loc.y);  
  6. }  


点击运行;一切OK;

 

 

下一篇文章 我会介绍cocos2d-x  editor的音乐和音效       笔者(李元友)

猜你喜欢

转载自makeapp628.iteye.com/blog/2020199