新手求教:按 'A' 或 'D' 键控制小绵羊,范例修改成两个buttom触发怎么弄

官方范例 是 按键盘上的A 或者 D 实现 控制小绵羊
本人菜鸟,在学习中

想设置成两个buttom 通过 点击 或者 H5 页面触摸两个页面上 左右的 buttom 实现控制 小绵羊

然而 脚本没写对,求大神写一个,我学习一下

有 哪位好心的大神 指导一下吗?

把你写的打包发上来看看呗

就是 官方范例里面的,然后加了两个 buttom 按钮

然后你应该进行事件与按钮的关联,具体的可以看文档 按钮组件 http://www.cocos.com/docs/creator/components/button.html

给你推荐这个 http://forum.cocos.com/t/creator-11-21/39917

官方范例 打包文件太大
就拿 制作第一个小游戏来 说明吧
现在 紫色 的player 能动
我又加了 左右的两个 按钮
希望 可以通过 点击触摸来控制 player,

然而 我按照 官方参考手册 改的代码,貌似 没有反应啊
能帮忙看一下吗?


cc.Class({
extends: cc.Component,

properties: {

    // 主角跳跃高度
    jumpHeight: 0,
    // 主角跳跃持续时间
    jumpDuration: 0,
    // 最大移动速度
    maxMoveSpeed: 0,
    // 加速度
    accel: 0,



},

setJumpAction: function () {
    // 跳跃上升
    var jumpUp = cc.moveBy(this.jumpDuration, cc.p(0, this.jumpHeight)).easing(cc.easeCubicActionOut());
    // 下落
    var jumpDown = cc.moveBy(this.jumpDuration, cc.p(0, -this.jumpHeight)).easing(cc.easeCubicActionIn());
    // 不断重复
    return cc.repeatForever(cc.sequence(jumpUp, jumpDown));
},

setInputControl: function () {
    var self = this;
    // 添加键盘事件监听
    cc.eventManager.addListener({
        event: cc.EventListener.KEYBOARD,
        // 有按键按下时,判断是否是我们指定的方向控制键,并设置向对应方向加速
        onKeyPressed: function(keyCode, event) {
            switch(keyCode) {
                case cc.KEY.a:
                    self.accLeft = true;
                    self.accRight = false;
                    break;
                case cc.KEY.d:
                    self.accLeft = false;
                    self.accRight = true;
                    break;
            }
        },
        // 松开按键时,停止向该方向的加速
        onKeyReleased: function(keyCode, event) {
            switch(keyCode) {
                case cc.KEY.a:
                    self.accLeft = false;
                    break;
                case cc.KEY.d:
                    self.accRight = false;
                    break;
            }
        }
    }, self.node);
},

leftButtomControl:function(){ // 左侧 按钮 触发事件

   var self = this;

    // alert("move to the left");

   // 添加触摸事件监听
   cc.eventManager.addListener({
       event: cc.EventListener.TOUCH_ONE_BY_ONE,
       target:this,
       onTouchBegan:function(){
           self.accLeft = true;
           self.accRight = false;
       },
       onTouchEnded:function(){
           self.accLeft = false;

       }


   }, self.node);

},

rightButtomControl:function(){ // 右侧 按钮 触发事件
alert(“move to the right”);

},

// use this for initialization
onLoad: function () {
    // 初始化跳跃动作
    this.jumpAction = this.setJumpAction();
    this.node.runAction(this.jumpAction);

    // 加速度方向开关
    this.accLeft = false;
    this.accRight = false;
    // 主角当前水平方向速度
    this.xSpeed = 0;

    // 初始化键盘输入监听
    this.setInputControl();

},

// called every frame, uncomment this function to activate update callback
update: function (dt) {
    // 根据当前加速度方向每帧更新速度
    if (this.accLeft) {
        this.xSpeed -= this.accel * dt;
    } else if (this.accRight) {
        this.xSpeed += this.accel * dt;
    }
    // 限制主角的速度不能超过最大值
    if ( Math.abs(this.xSpeed) > this.maxMoveSpeed ) {
        // if speed reach limit, use max speed with current direction
        this.xSpeed = this.maxMoveSpeed * this.xSpeed / Math.abs(this.xSpeed);
    }

    // 根据当前速度更新主角的位置
    this.node.x += this.xSpeed * dt;
}

});

那你事件跟按钮关联了吗?

关联了的,用alert()做测试,点击 按钮 没问题,可以弹出 alert()

cc.Class({
extends: cc.Component,

properties: {

    // 主角跳跃高度
    jumpHeight: 0,
    // 主角跳跃持续时间
    jumpDuration: 0,
    // 最大移动速度
    maxMoveSpeed: 0,
    // 加速度
    accel: 0,



},

setJumpAction: function () {
    // 跳跃上升
    var jumpUp = cc.moveBy(this.jumpDuration, cc.p(0, this.jumpHeight)).easing(cc.easeCubicActionOut());
    // 下落
    var jumpDown = cc.moveBy(this.jumpDuration, cc.p(0, -this.jumpHeight)).easing(cc.easeCubicActionIn());
    // 不断重复
    return cc.repeatForever(cc.sequence(jumpUp, jumpDown));
},

setInputControl: function () {
    var self = this;
    // 添加键盘事件监听
    cc.eventManager.addListener({
        event: cc.EventListener.KEYBOARD,
        // 有按键按下时,判断是否是我们指定的方向控制键,并设置向对应方向加速
        onKeyPressed: function(keyCode, event) {
            switch(keyCode) {
                case cc.KEY.a:
                    self.accLeft = true;
                    self.accRight = false;
                    break;
                case cc.KEY.d:
                    self.accLeft = false;
                    self.accRight = true;
                    break;
            }
        },
        // 松开按键时,停止向该方向的加速
        onKeyReleased: function(keyCode, event) {
            switch(keyCode) {
                case cc.KEY.a:
                    self.accLeft = false;
                    break;
                case cc.KEY.d:
                    self.accRight = false;
                    break;
            }
        }
    }, self.node);
},

leftButtomControl:function(){ // 左侧 按钮 触发事件

   var self = this;

    // alert("move to the left");

   // 添加触摸事件监听
   cc.eventManager.addListener({
       event: cc.EventListener.TOUCH_ONE_BY_ONE,
       target:this,
       onTouchBegan:function(){
           self.accLeft = true;
           self.accRight = false;
       },
       onTouchEnded:function(){
           self.accLeft = false;

       }


   }, self.node);

},

rightButtomControl:function(){ // 右侧 按钮 触发事件
alert(“move to the right”);

},

// use this for initialization
onLoad: function () {
    // 初始化跳跃动作
    this.jumpAction = this.setJumpAction();
    this.node.runAction(this.jumpAction);

    // 加速度方向开关
    this.accLeft = false;
    this.accRight = false;
    // 主角当前水平方向速度
    this.xSpeed = 0;

    // 初始化键盘输入监听
    this.setInputControl();

},

// called every frame, uncomment this function to activate update callback
update: function (dt) {
    // 根据当前加速度方向每帧更新速度
    if (this.accLeft) {
        this.xSpeed -= this.accel * dt;
    } else if (this.accRight) {
        this.xSpeed += this.accel * dt;
    }
    // 限制主角的速度不能超过最大值
    if ( Math.abs(this.xSpeed) > this.maxMoveSpeed ) {
        // if speed reach limit, use max speed with current direction
        this.xSpeed = this.maxMoveSpeed * this.xSpeed / Math.abs(this.xSpeed);
    }

    // 根据当前速度更新主角的位置
    this.node.x += this.xSpeed * dt;
}

});

//////// 上面发的代码,格式有点乱
// 重新发一次

start_project4_addButtom_beta.zip (561.4 KB)

嗯,我测试看看

我是菜鸟,学习中
希望 可以点击 左右buttom 实现控制 player
代码可能没写对
求大神指导

你不能这样写吧,应该是设置他的 accLeft 的状态吧,按钮按下的时候为 true 放开为 false 不需要在去添加触摸事件监听

啊? 不设置 触摸监听事件啊?
蒙圈了,
求教大神,写一个左边按钮的

然后我自己写一个 右边按钮的

Player.zip (1.3 KB)

你看看这个脚本里面的