方法一:重写
1.重写action
cc.MoveCircle = cc.ActionInterval.extend(/** @lends cc.MoveBy# */{
_positionDelta:null,
_startPosition:null,
_previousPosition:null,
ctor:function (duration, R) {
cc.ActionInterval.prototype.ctor.call(this);
this._positionDelta = cc.p(0, 0);
this._startPosition = cc.p(0, 0);
this._previousPosition = cc.p(0, 0);
this._R = R;
this.initWithDuration(duration, R);
},
initWithDuration:function (duration, R) {
if (cc.ActionInterval.prototype.initWithDuration.call(this, duration)) {
this._R = R;
return true;
}
return false;
},
startWithTarget:function (target) {
cc.ActionInterval.prototype.startWithTarget.call(this, target);
var locPosX = target.getPositionX();
var locPosY = target.getPositionY();
this._startPosition.x = locPosX;
this._startPosition.y = locPosY;
this._delayTime = 0;
},
update:function (dt) {
if (this.target) {
var locStartPosition = this._startPosition;
if (cc.ENABLE_STACKABLE_ACTIONS) {
var R = this._R;
var rat = dt * 3.1415926 * 2;
var x = locStartPosition.x + R * Math.cos(rat);
var y = locStartPosition.y + R * Math.sin(rat);
this.target.setPosition(x, y);
} else {
this.target.setPosition(locStartPosition.x + x, locStartPosition.y + y);
}
}
}
});
huaban.runAction(cc.repeatForever(cc.sequence(
new cc.MoveCircle(10, 80),
cc.callFunc(function(){
huaban.setPosition(cc.p(640,360));
})
)));
方法二:
var radius = 80;
var card = new Card();
card.setData(2, null, 2);
card.setPosition(cc.p(300 + radius, 300));
card.setName('guangquan');
head.addChild(card);
var count = 60;
var angle = 360/count;
var time = 20;
for(var k=0;k<count;k++) {
var x = radius * Math.cos(angle * (k)) + 300;
var y = radius * Math.sin(angle * (k)) + 300;
console.log("x:::y::: " + x + " ===== " + y + " kkk===" + k);
var action = cc.sequence(
cc.delayTime(time / count * (k)),
cc.moveTo(time / count, x, y)
)
card.runAction(action);
}
方法三:
var angleTotal = 60;
var duration_time = 10;
var radius = 60;
var perFrameAngle = null;
//perFrameAngle = duration_time/angleTotal /(180/Math.PI);
perFrameAngle = angleTotal/duration_time;
var frameCnt = 0;
var node = new cc.Node();
// var huaban = new cc.ParticleSystem(res.lizi1_1_plist);
var huaban = new Card();
huaban.setData(2, null, 2);
huaban.setAnchorPoint(cc.p(.5, .5));
huaban.setPosition(cc.p(0,0));
this.schedule(function(){
var guangquan = that.getChildByName('guangquan');
frameCnt++;
if(!guangquan){
node.setName('guangquan');
node.setPosition(640 + 60,360);
that.addChild(node);
node.addChild(huaban);
}
if(guangquan){
var newPoint = that.rotateByAngle(frameCnt*perFrameAngle, radius, huaban);
//console.log(newPoint);
huaban.setPosition(newPoint);
}
}, .03);