在第一帧创建js精灵冻结

时间:2016-01-14 10:01:33

标签: createjs

用这个拉出我的头发,希望它不是傻事。下面是一个程序代码片段。当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!!
    }

2 个答案:

答案 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;
            }
        }