【问题标题】:EaselJS and SpriteSheetEaselJS 和 SpriteSheet
【发布时间】:2012-02-02 10:35:47
【问题描述】:

我只是想在精灵表中获取每一帧,但我一直得到的只是第一帧,这是代码:

function handleImageLoaded(e)
{
    var c   = new Container();
    var d   = { };
    var l   = rx * ry;
    var lh  = canvas.height / ry;
    var lw  = canvas.width / rx;
    var lx  = 0;
    var ly  = 0;
    var s;
    var t;

    d.images    = [ e.target ];
    d.frames    = { width: lw, height: lh, count: l };

    s   = new SpriteSheet( d );

    for ( var i = 0; i < l; i++ )
    {
        t   = new Bitmap( s.getFrame( i ).image );

        t.x = lx++ * lw;
        t.y = ( lx == rx ? ly++ : ly ) * lh;

        lx  = lx == rx ? 0 : lx;

        c.addChild( t );
    }

    stage.addChild( c );

    stage.update();
}

我会把它放在小提琴上,但图像会出现跨域问题。

【问题讨论】:

    标签: sprite-sheet easeljs


    【解决方案1】:

    试试SpriteSheetUtils.exractFrame(见SpriteSheetUtils)。它与您在自定义代码中所做的完全一样。

    【讨论】:

      【解决方案2】:

      您的代码中的问题是 frame.image 属性指向源位图,这对于 spritesheet 中的所有帧都是相同的(除非您有一个多图像 spritesheet)。

      要显示 spritesheet 中的帧,请使用 Sprite。比如修改你的代码:

      for ( var i = 0; i < l; i++ )
      {
          t   = new Sprite(spriteSheet, i);
      
          t.x = lx++ * lw;
          t.y = ( lx == rx ? ly++ : ly ) * lh;
      
          lx  = lx == rx ? 0 : lx;
      
          c.addChild( t );
      }
      

      【讨论】:

        【解决方案3】:

        好吧,虽然我无法解决 EaselJS 的问题,但我只是解决了它。我创建了一个复制 getFrame 函数的函数,该函数是 EaselJS 的 sprite 内容本来要做的,这里是:

        function generateTile(p, i)
        {
            var cs  = document.createElement( 'canvas' );
            var c   = cs.getContext( '2d' );
        
            cs.height   = p[ 3 ];
            cs.width    = p[ 2 ];
        
            c.drawImage( i, p[ 0 ], p[ 1 ], p[ 2 ], p[ 3 ], 0, 0, p[ 2 ], p[ 3 ] );
        
            return new Bitmap( cs );
        }
        

        【讨论】:

          猜你喜欢
          • 2013-02-22
          • 1970-01-01
          • 2014-06-28
          • 2014-06-14
          • 2013-01-03
          • 2013-03-17
          • 2013-10-29
          • 2017-04-26
          • 2013-11-25
          相关资源
          最近更新 更多