1

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

ベクトルを使用するビットマップが 1 つしかない場合は役に立たないことはわかっていますが、後で 2 つのビットマップを持つスプライトシートまたはボタンが必要になります。さらに、これらのベクトルを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いて機能するが、このようにしたくない場合。1 つのスプライトに対してより多くのビットマップがある場合は、ベクターを使用する必要があります。または、1つの世界でも。さらに、これらのベクトルを Assets.as クラス内に作成したいと考えています。

4

2 に答える 2

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

于 2012-09-06T16:42:07.577 に答える
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]);
于 2012-10-10T23:17:58.987 に答える