如何访问精灵表as3

时间:2014-12-16 10:04:27

标签: actionscript-3

我是动作脚本3的新手,请告诉我如何访问精灵表内的每个图像到As3类或任何其他参考项目也请提供给我。

还可以一步一步地在我的自定义类中访问这些图像。

先谢谢。

2 个答案:

答案 0 :(得分:0)

在精灵表中涉及到一些工作。 有框架和库可以帮助您实现这一目标。

它还取决于您用于显示事物的技术(常规DisplayObjects,blitting,starling,......)

您应该将精灵表作为BitmapData对象,通过加载Loader或嵌入它。 (我认为这是如何工作的不在你的问题范围内)

从那里开始,代码会执行您通常使用此类工作表所做的操作:将其剪切成碎片。 为此,您需要创建第二个BitmapData对象,这将是您的角色或其他任何东西。 这是您实际显示的BitmapData。例如,借助Bitmap对象执行此操作。

您现在要做的是使用copyPixels()将精灵部分的部分复制到角色BitmapData。此方法采用矩形(除其他外)作为参数,指定源BitmapData的哪一部分(精灵表)应该被复制。

您现在要做的是根据您想要实现的目标更改复制的部分。 也许你的工作表中有一个序列,所以你必须移动矩形对象才能复制不同的"帧"动画。

如上所述,还有其他方法可以显示这些数据,但实质上它可以归结为从工作表中复制像素并将它们扔到显示它们的东西上。 copyPixels()方法可以做到这一点。

答案 1 :(得分:0)

尝试使用Starling,而不是经典Flash

看这个链接:

http://wiki.starling-framework.org/manual/movie_clips

// Embed the Atlas XML
[Embed(source="atlas.xml", mimeType="application/octet-stream")]
public static const AtlasXml:Class;

// Embed the Atlas Texture:
[Embed(source="atlas.png")]
public static const AtlasTexture:Class;

// create atlas
var texture:Texture = Texture.fromBitmap(new AtlasTexture());
var xml:XML = XML(new AtlasXml());
var atlas:TextureAtlas = new TextureAtlas(texture, xml);

// create movie clip
var movie:MovieClip = new MovieClip(atlas.getTextures("flight_"), 10);
movie.loop = false; // default: true
addChild(movie);

// control playback
movie.play();
movie.pause();
movie.stop();

// important: add movie to juggler
Starling.juggler.add(movie);