2012-09-06 60 views
1

我想把所有的東西都做成Sprite,因爲我聽說這是一個好主意,直​​到它不是動畫。我做這樣說:AS3 FlashCS6位圖數據向量

//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]; 
} 

我當我只有一個位圖使用矢量時,知道這是無用的,但後來會有兩個位圖的spritesheet或按鈕。更重要的是我要存儲Asstets.as 這些載體和有問題,甚至試圖在課堂,我希望它用它來創建它們,原因:

  1. 想:是這樣的:data:Vector.<BitmapData> = new Vector.<BitmapData>([pic]);
    接收錯誤:索引0超出範圍0.

  2. 嘗試:這種方式:data:Vector.<BitmapData> = new Vector.<BitmapData>[pic];
    接收:嘗試在非構造函數上實例化。我認爲這很明顯。

當我使用

pic:BitmapbackgroundImg.bitmapData = pic.bitmapData它的工作原理,但我不希望這樣。當一個精靈有更多的位圖時,需要使用矢量。甚至是一個世界。更重要的是,想要在Assets.as類中創建這些向量。

回答

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

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]);