【发布时间】:2014-09-20 23:54:52
【问题描述】:
我有一个 moveTo 精灵动作,我试图让精灵在移动时动画。这是一个行走的动画。
我的麻烦是我可以让精灵 moveTo 或动画但不能同时使用,这样当精灵停止移动时,动画会回到站立框架。
我正在使用 cocos2d-js v3.0
this.sprite = new cc.Sprite.create("#player-stand-f-0");
this.sprite.setPosition(new cc.Point(300,300));
this.addChild(this.sprite);
var animFrames = [];
var str = "";
for (var i = 0; i < 5; i++) {
str = "player-walk-f-" + i;
var spriteFrame = cc.spriteFrameCache.getSpriteFrame(str);
var animFrame = new cc.AnimationFrame();
animFrame.initWithSpriteFrame(spriteFrame, 1, null);
animFrames.push(spriteFrame);
}
var animation = cc.Animation.create(animFrames, 0.025);
var animate = cc.animate(animation);
sprite_action = cc.MoveTo.create(2,cc.p(x,y));
this.sprite.runAction(sprite_action);
this.sprite.runAction(animate);
我也尝试了以下方法,但步行会动画一次,直到 moveTo 停止才会继续。
var seq = cc.sequence(animate, sprite_action);
【问题讨论】:
-
单独调用这些操作是否有效?我的意思是,您是否尝试过仅注释掉其中一个
runAction调用,以查看如果未调用另一个调用它们是否按预期工作? -
如果是,你试过
cc.spawn(animate, sprite_action)吗? (题外话:注意cc.spawn()等于cc.Spawn.create(),这适用于所有其他操作。.create()方法已弃用) -
是的,动作单独运行。它们也按顺序一起运行,但动画只循环一次,而不是在移动期间
-
是的,我已经尝试过 .spawn 并且动画只运行一个循环,就像序列一样
-
Bloop。我能想到的只是在官方论坛上提问。那边的人对框架的内部运作有更好的了解。