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

原创 2014年01月25日 12:26:54

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


效果如下:




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



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

MainLayer.prototype.onDidLoadFromCCB = function () {
    if (sys.platform == 'browser') {
        this.onEnter();
    }
    else {
        this.rootNode.onEnter = function () {
            this.controller.onEnter();
        };
    }

    this.rootNode.schedule(function (dt) {
        this.controller.onUpdate(dt);
    });

    this.rootNode.onExit = function () {
        this.controller.onExit();
    };

    this.rootNode.onTouchesBegan = function (touches, event) {
        this.controller.onTouchesBegan(touches, event);
        return true;
    };

    this.rootNode.onTouchesMoved = function (touches, event) {
        this.controller.onTouchesMoved(touches, event);
        return true;
    };
    this.rootNode.onTouchesEnded = function (touches, event) {
        this.controller.onTouchesEnded(touches, event);
        return true;
    };
    this.rootNode.setTouchEnabled(true);
};

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

MainLayer.prototype.onTouchesBegan = function (touches, event) {
    var loc = touches[0].getLocation();
}

MainLayer.prototype.onTouchesMoved = function (touches, event) {
    cc.log("onTouchesMoved");
}

MainLayer.prototype.onTouchesEnded = function (touches, event) {
    cc.log("onTouchesEnded");
}


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

MainLayer.prototype.monsterMove = function (x, y) {
    this.monster.stopAllActions();
    cc.AnimationCache.getInstance().addAnimations("Resources/snow_frame.plist");//添加帧动画文件
    var action0 = cc.Sequence.create(cc.MoveTo.create(5, cc.p(x, y)));  //向前移动
    var actionFrame = cc.Animate.create(cc.AnimationCache.getInstance().getAnimation("monster"));   //获取帧动画
    var action1 = cc.Repeat.create(actionFrame, 90000);
    var action2 = cc.Spawn.create(action0, action1); //同步动画
    this.monster.runAction(action2);
}

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

MainLayer.prototype.onTouchesEnded = function (touches, event) {
    cc.log("onTouchesEnded");
    var loc = touches[0].getLocation();
    this.monsterMove(loc.x, loc.y);
}

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



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

MainLayer.prototype.createParticle = function (name, x, y) {
    var particle = cc.ParticleSystem.create("Resources/particles/" + name + ".plist");
    particle.setAnchorPoint(cc.p(0.5, 0.5));
    particle.setPosition(cc.p(x, y));
    particle.setPositionType(1);
    particle.setDuration(3);
    this.rootNode.addChild(particle);
}

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

MainLayer.prototype.onTouchesEnded = function (touches, event) {
    cc.log("onTouchesEnded");
    var loc = touches[0].getLocation();
    this.monsterMove(loc.x, loc.y);
    this.createParticle("around", loc.x, loc.y);
}

点击运行;一切OK;


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

资料来源:cocos2d-x  editor


【cocos2d-js官方文档】十七、事件分发机制

简介 游戏开发中一个很重要的功能就是交互,如果没有与用户的交互,那么游戏将变成动画,而处理用户交互就需要使用事件监听器了。 总概: 事件监听器(cc.EventListener) 封装用户的事件...
  • qinning199
  • qinning199
  • 2014年12月15日 23:37
  • 16675

cocos2dx-lua捕获用户touch事件的几种方式

这里只针对lua1.为每个关心的事件注册回调函数 具体分为以下几种 1>单点触摸 2>多点触摸...
  • LingXi__Y
  • LingXi__Y
  • 2016年10月17日 08:36
  • 3691

cocos2d-html5学习笔记(四)--键盘事件和touch事件

游戏是互动的,获取用户输入至关重要。cocos2d中目前只有Layer以及其子类默认能够获取用户输入,即触发用户输入的事件。其他节点需要开启触摸事件的话,需要自己手动实现。 现在看一个例子: ...
  • Allenice1
  • Allenice1
  • 2012年07月10日 16:47
  • 12947

六 手游开发神器 cocos2d-x editor 之场景切换

接着上一节,我们已经创建了一个主游戏场景MainLayer,现在我们需要创建一个开始场景StartLayer,包括StartLayer.ccbx和StartLayer.js两个文件,点击StartLa...
  • touchsnow
  • touchsnow
  • 2014年01月23日 20:03
  • 6699

四 手游开发神器 cocos2d-x editor 游戏框架介绍

cocos2d-x editor 新建工程时会自动生成游戏框架,如下图  红色边框共有五个区域  idea 是自动生成的目录,读者不需要操作 Source是主工程目录,所有的设计和编码都...
  • touchsnow
  • touchsnow
  • 2014年01月23日 11:44
  • 14776

史上最优秀的,最快的编辑器VIM(上古神器)

给大家介绍一下非常优秀的一款编辑器vim,它诞生于可视化界面之前,的一款非常古老的编辑神器,那会儿都是黑乎乎的命令窗口,鼠标的都没有 vim可以解放我们一直抓着鼠标的手,因为vim提供了足够...
  • Yun__shen
  • Yun__shen
  • 2017年10月28日 21:57
  • 306

三 手游开发神器 cocos2d-x editor 之基础工具 intellij idea

intellij idea 13 注册序列号:亲测有效  Orefa      00066-FEIQE-EEZDY-D9PBH-Z9W0E-SPJS1makeapp   00820-K2S8N-...
  • touchsnow
  • touchsnow
  • 2014年01月18日 18:26
  • 12573

十四 手游开发神器 cocos2d-x editor 之串联游戏流程

这一节主要是介绍cocos2dx editor的串联游戏流程。cocos2dx editor是开发跨平台的手机游戏工具,运行window系统上,javascript脚本语言,基于cocos2d-x跨平...
  • touchsnow
  • touchsnow
  • 2014年01月25日 18:10
  • 4853

十二 手游开发神器 cocos2d-x editor 之游戏暂停悬浮层

这一节主要是介绍cocos2dx editor的暂停界面。cocos2dx editor是开发跨平台的手机游戏工具,运行window系统上,javascript脚本语言,基于cocos2d-x跨平台游...
  • touchsnow
  • touchsnow
  • 2014年01月25日 15:36
  • 5265

七 手游开发神器 cocos2d-x editor 之图片字体(LabelBMFont)

这一节主要是介绍cocos2dx editor的图片字体功能,实现分数不停的刷新效果。cocos2dx editor是开发跨平台的手机游戏工具,运行window系统上,javascript脚本语言,基...
  • touchsnow
  • touchsnow
  • 2014年01月24日 13:44
  • 7172
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:十 手游开发神器 cocos2d-x editor 之触摸事件
举报原因:
原因补充:

(最多只允许输入30个字)