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

大神,我这边还是没跑起来,
求大神帮忙看看

Player.zip (1.3 KB)

看图里,你的leftButtonStartControl和leftButtonUpControl应该放到跟leftButtomControl(Button打成了Buttom)同级(像rightButtomControl那样),不是在它里面。

然而 还是不行
报错了

你先看看我发给你的 Player 的代码里面函数写的位置吧… 比较一下跟你的有什么不同

但是 如果 把这个放在最外面的话

this.leftButton.on(cc.Node.EventType.TOUCH_START,this.leftButtomStartControl,this);
this.leftButton.on(cc.Node.EventType.TOUCH_UP,this.leftButtomUpControl,this);

那 this.是 指代的什么,我js 直接报错了啊

大神,那 就求个完整的吧。。。。

我下载了你的项目看了下,有好几个问题。墙裂建议你先好好通读一下Creator的文档和JS基础知识,否则别人给你指出问题你也是一知半解。比如Player.js组件不需要每个Button和Label都挂上。。。
这是LeftButton可以使用的项目:start_project4_addButtom_beta.zip (564.2 KB)

你直接看 @toddlxt 的发的项目吧,看看他的做法

哦,我发现 我的事件是 绑在 两个 左右 buttom上的

然而 你是 在 properties: {}里面 添加 了

    leftButton: cc.Node,
    rightButton: cc.Node

然后 在 player 里面 添加 了 两个 buttom

试过了 在game.js 的onLoad方法里面这么写
网页 ios设备测试都没有问题 可以左右移动 这样写然后编译一下
onLoad: function () {
//获取地平面的y轴坐标,node属性里有x(x轴坐标),y(y轴坐标),width(宽度),height(高度)
this.groundY = this.ground.y + this.ground.height/2;

    //初始化定时器
    this.timer = 0;
    this.starDuration = 0;


    //生成一个新的星星
    this.spawnNewStar();


    this.score = 0;


    var self = this;//为了触摸下文中使用,如果在触摸方法里使用this的话,那么就报错了。


    this.node.on(cc.Node.EventType.TOUCH_START, function(event){
        console.log("touchstart");
        console.log("touchX is " + event.touch.getLocation().x);
        console.log("touchY is " + event.touch.getLocation().y);
        console.log("player x is " + self.player.x);
        //对player的坐标系进行转为世界坐标系
        //var playerX = self.node.convertToNodeSpace(event.touch.getLocation());
        var touchPos = self.node.convertTouchToNodeSpaceAR(event.touch);
        if(self.player.x < touchPos.x){
            self.player.getComponent("Player").accLeft = false;
            self.player.getComponent("Player").accRight = true;
        }
        else{
            self.player.getComponent("Player").accLeft = true;
            self.player.getComponent("Player").accRight = false;
        }
        
    }, this.node);
    this.node.on(cc.Node.EventType.TOUCH_MOVE, function(event){
        console.log("TOUCH_MOVE");
        var touchPos = self.node.convertTouchToNodeSpaceAR(event.touch);
        if(self.player.x < touchPos.x){
            self.player.getComponent("Player").accLeft = false;
            self.player.getComponent("Player").accRight = true;
        }
        else{
            self.player.getComponent("Player").accLeft = true;
            self.player.getComponent("Player").accRight = false;
        }


    }, this.node);
    this.node.on(cc.Node.EventType.TOUCH_END, function(event){
        console.log("TOUCH_END");
        var touchPos = self.node.convertTouchToNodeSpaceAR(event.touch);
        if(self.player.x < touchPos.x){
            self.player.getComponent("Player").accLeft = false;
            self.player.getComponent("Player").accRight = false;
        }
        else{
            self.player.getComponent("Player").accLeft = false;
            self.player.getComponent("Player").accRight = false;
        }
    }, this.node);
},

对的,因为绑在Button上的方法只会响应touchend事件,但是你需要touchstart和touchend,所以只能自己代码里用on()添加事件。另外你的事件cc.Node.EventType.TOUCH_UP应该是cc.Node.EventType.TOUCH_END。

求问大神
rightButtomControl:function()
是 在哪里 绑定的,哦?

右侧 buttom 点击没反应啊?

leftButtomControl在下面onLoad里调用的,意思是节点加载的时候调用一次leftButtomControl来绑定事件。你加一行调用right的就行了。

哦,原来如此
忽然,发现自己傻逼了
我去。。。。都没仔细看

兄弟你是不是拼错了,button不是buttom