0

スプライトシートの各フレームを取得しようとしていますが、取得し続けるのは最初のフレームだけです。コードは次のとおりです。

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

私はこれをフィドルに貼り付けますが、画像にはクロスドメインの問題があります。

4

3 に答える 3

1

試してくださいSpriteSheetUtils.exractFrameSpriteSheetUtilsを参照)。カスタムコードで行うことを正確に実行します。

于 2012-01-19T04:22:04.543 に答える
0

私は EaselJS の問題を解決できませんでしたが、回避策を講じただけです。getFrameEaselJS のスプライト機能が意図していた機能を複製する機能を作成しました。

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 );
}
于 2012-01-04T20:09:58.103 に答える