sprite 圆形运动,圆周运动


方法一:重写

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);


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值