1. 加入触摸以及鼠标移动监听
if('touches' in cc.sys.capabilities) {
cc.eventManager.addListener(cc.EventListener.create({
event: cc.EventListener.TOUCH_ALL_AT_ONCE,
onTouchesEnded:function(touches, event) {
if(touches.length <= 0)
return;
event.getCurrentTarget().moveSprite(touches[0].getLocation());
}
}),this);
}
else if ('mouse' in cc.sys.capabilities )
cc.eventManager.addListener({
event: cc.EventListener.MOUSE,
onMouseUp: function (event) {
event.getCurrentTarget().moveSprite(event.getLocation());
}
}, this);
2. 除了可以给精灵加动作,还可以给层加入动作
var sprite = cc.Sprite.create(s_pathGrossini);
var layer = cc.LayerColor.create(cc.color(255, 255, 0, 100));
this.addChild(layer, -1);
this.addChild(sprite, 0, TAG_SPRITE);
sprite.x = 20;
sprite.y = 150;
sprite.runAction(cc.JumpTo.create(4, cc.p(300, 48), 100, 4));
var fadeIn = cc.FadeIn.create(1);
var fadeOut = cc.FadeOut.create(1);
var forever = cc.RepeatForever.create(cc.Sequence.create(fadeIn, fadeOut));
layer.runAction(forever);
3. 主要函数moveSprite,首先根据tab获得对象,停止对象所有动作,然后加入新动作
var sprite = this.getChildByTag(TAG_SPRITE);
sprite.stopAllActions();
sprite.runAction(cc.MoveTo.create(1, position));
var o = position.x - sprite.x;
var a = position.y - sprite.y;
var at = Math.atan(o / a) * 57.29577951; // radians to degrees
if (a < 0) {
if (o < 0)
at = 180 + Math.abs(at);
else
at = 180 - Math.abs(at);
}
sprite.runAction(cc.RotateTo.create(1, at));