我只是想在一个精灵工作表中得到每一帧,但我一直得到的是第一帧,下面是代码:
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();
}我会把这个放在小提琴上,但是图像会有跨域的问题。
发布于 2012-01-19 12:22:05
尝试SpriteSheetUtils.exractFrame (请参阅SpriteSheetUtils)。它的功能与您在自定义代码中所做的完全相同。
发布于 2013-10-02 07:44:53
代码中的问题是,frame.image属性指向源位图,这对于子结构表中的所有帧都是相同的(除非您有多图像子结构表)。
若要显示精灵工作表中的帧,请使用精灵。例如,修改您的代码:
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 );
}发布于 2012-01-05 04:09:58
嗯,虽然我不能用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 );
}https://stackoverflow.com/questions/8728341
复制相似问题