用这个拉出我的头发,希望它不是傻事。下面是一个程序代码片段。当leftwalker.x == 150
他应该gotoAndPlay
静止动画但它只播放第一帧时,前一个动画运行正常。有任何想法吗?
var data =
{
images: ["images/ste_basic_wand.png"],
frames: {width:64, height:64},
animations:
{
// start, end, next, speed
walkright: [143,151,"walkright",1.18],
walkleft: [118,125,"walkleft",1.18],
stand:[39,45,"stand",0.08],
standstill:[26,27, "standstill", 1.2]
}
};
var spriteSheet = new createjs.SpriteSheet(data);
leftwalker = new createjs.Sprite(spriteSheet);
leftwalker.name = "lefty";
leftwalker.framerate = 30;
leftwalker.x = 100;
leftwalker.y = 100;
leftwalker.currentFrame = 0;
leftwalker.scaleY = leftwalker.scaleX = 2;
leftwalker.gotoAndPlay("walkright");
stage.addChild(leftwalker);
createjs.Ticker.setFPS(10);
createjs.Ticker.addEventListener("tick", tick);
}
function tick(event) {
if(container.x < 150)
{
container.x += 5;
}
if(leftwalker.x < 150)
{
leftwalker.x += 2;
}
if(leftwalker.x == 150)
{
leftwalker.gotoAndPlay("standstill");
}
// if (circle.x > stage.canvas.width) { circle.x = 0; }
stage.update(event); // important!!
}
答案 0 :(得分:1)
发生这种情况的原因是因为您在勾号期间呼叫gotoAndPlay("standstill")
。一旦达到150,你的精灵就会停止移动,所以它永远在x=150
。这意味着每个刻度都会告诉它gotoAndPlay
相同的帧,导致它被&#34;卡住&#34;。
答案 1 :(得分:0)
找到解决方法,仍然不确定为什么但是easaljs不喜欢代码
if(leftwalker.x == 150)
{
leftwalker.gotoAndPlay("standstill");
}
当我更改它以使char不会卡在点150(将他移动到151)时,动画开始。我还放慢了静止状态下的动画,使它看起来更真实,但这与我没有发布此代码的修复有关。
if(leftwalker.x == 150)
{
leftwalker.gotoAndPlay("standstill");
if(leftwalker.x < 180)
{
leftwalker.x += 1;
}
}