触摸控制就是我们常在手机上用手按住屏幕上的某物体拖动的实现
1.首先:
在onLoad里面打开对触摸或者鼠标锁定的控制开关
这里的hero是我创建的节点,你们用什么节点就替换成相应的节点就可以
2.接下来开始编写onTouchMove函数了
event是接受控制的事情。
顺带学习一下getLocation()这个函数,查看API如下,返回一个二维坐标
getDelta() 函数的API如上,返回也是一个二维坐标。
接下来这两个貌似没什么大作用,但最好加上,这人可以让程序避免一下意外的错误
完整代码:(将hero换成你们要实现监控的节点就可以)
cc.Class({
extends: cc.Component,
properties: {
//bj_1:cc.Node,
//bj_2:cc.Node,
hero:cc.Node,
//bullet:cc.Prefab,
},
onLoad ()
{
//this.bullet_sx=0;
this.hero.on(cc.Node.EventType.TOUCH_MOVE,this.onTouchMove,this)
//手指按下时开始监控
this.hero.on(cc.Node.EventType.TOUCH_END,this.onTouchEnd,this);
//手指松开时终止监控
this.hero.on(cc.Node.EventType.TOUCH_CANCEL,this.onTouchCancel,this);
//终止对该事件监控
},
onTouchMove(event){
var oldPos = event.getLocation();
//console.log(oldPos,this.role.x,this.role.y);
var delta = event.getDelta();
this.hero.x += delta.x;
this.hero.y += delta.y;
},
onTouchEnd:function(){
cc.log('触摸结束');
},
onTouchCancel:function(){
cc.log('触摸取消')
},
/* MoveBj:function(){
this.bj_1.y -= 8;
this.bj_2.y -= 8;
if(this.bj_1.y <= -this.bj_1.height)
this.bj_1.y = this.bj_1.height;
if(this.bj_2.y <= -this.bj_1.height)
this.bj_2.y = this.bj_1.height;*/
},
/* CreateBullet:function(){
var Bullet = cc.instantiate(this.bullet);
this.node.addChild(Bullet);
Bullet.setPosition(this.hero.x,this.hero.y + this.hero.height/2+10);
//Bullet.getComponent('bullet').game = this;
},*/
update (dt)
{
/*this.bullet_sx++;
if(this.bullet_sx >= 16)
{
this.CreateBullet();
this.bullet_sx=0;
}
this.MoveBj(); //主游戏场景轮番移动的函数*/
},
});