AS3 FlashCS6位图数据的向量

时间:2012-09-06 11:02:15

标签: actionscript-3

我希望将所有内容都设为Sprite因为我听说这是一个好主意,直​​到它不是专业动画。我是这样做的:

// Assets.as

[Embed(source = "../lib/Textures/Game/GameBackground.jpg")] public static const GameBackground:Class;

然后我想上课的时候上课:

// Game.as

private var pic:Bitmap = new Assets.GameBackground();
private var DATA:Vector.<BitmapData> = new Vector.<BitmapData>([pic.bitmapData]);
private var backgroundImg:Bitmap = new Bitmap(new BitmapData(1, 1));    

public function Game(){
    addChild(backgroundImg);
    backgroundImg.bitmapData = DATA[0];
}

我知道当我只有一个位图来使用矢量时它没用,但后来会有spritesheets或带有两个位图的按钮。还有什么我想在Asstets.as中存储这些向量 即使尝试在我希望它使用的类中创建它们也有问题,原因是:

  1. 尝试:这样:data:Vector.<BitmapData> = new Vector.<BitmapData>([pic]);
    接收错误:索引0超出范围0。

  2. 尝试:这样:data:Vector.<BitmapData> = new Vector.<BitmapData>[pic];
    接收:尝试对非构造函数进行实例化。我认为这是非常明显的。

  3. 当我只使用pic:BitmapbackgroundImg.bitmapData = pic.bitmapData时,它有效,但我不希望这样。当一个精灵有更多的位图时需要使用向量。甚至是一个世界。更重要的是,想在Assets.as类中创建这些向量。

2 个答案:

答案 0 :(得分:1)

当你创建一个新的Vector实例时,它接受的唯一参数(可选)是Vector的长度(你将拥有多少个元素)。

new Vector:<BitmapData>(5)

这会告诉矢量它将有5个元素。与数组不同,您无法在构造函数中传递元素。它省略了参数,它使长度动态,因此它可以根据需要增长/缩小。

您需要做的是:

data:Vector.<BitmapData> = new Vector:<BitmapData>();
data.push(pic.bitmapData);

更多关于创建向量的信息 http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7ee5.html#WSB1F41227-C612-4f33-A00E-CE84C1913E1C

答案 1 :(得分:0)

你的想法很不错= O

我为一些全球图像做了这件事,效果很好:

[Embed(source="greenled.png")] private static const greenled:Class;
[Embed(source="yellowled.png")] private static const yellowled:Class;
[Embed(source="redled.png")] private static const redled:Class;
public static const SIGN:Vector.<Class> = Vector.<Class>([greenled,yellowled,redled]);