大神,我这边还是没跑起来,
求大神帮忙看看
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)
哦,我发现 我的事件是 绑在 两个 左右 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。
leftButtomControl在下面onLoad里调用的,意思是节点加载的时候调用一次leftButtomControl来绑定事件。你加一行调用right的就行了。
哦,原来如此
忽然,发现自己傻逼了
我去。。。。都没仔细看
兄弟你是不是拼错了,button不是buttom