5

AS3 では、クラス変数にグラフィックを埋め込むことができます。

     [Embed(source="MenuAssets.swf", symbol="topSquare")]
        public var TopMenuItem:Class;

私が行っているこの 1 つの Web サイト プロジェクトには何百ものアセットがあるため、すばやくアクセスできるようにアセットを配列に埋め込みたいと考えています。

このようなことはできますか?コンパイルされていないので、可能かどうか疑問に思っています。

        public var MenuAssets:Array = [
           [Embed(source="MenuAssets.swf", symbol="topSquare")],
           [Embed(source="MenuAssets.swf", symbol="botSquare")],
           [Embed(source="MenuAssets.swf", symbol="leftSquare")],
           [Embed(source="MenuAssets.swf", symbol="rightSquare")],
        ]
4

3 に答える 3

5

私はあなたができないことを恐れています。あなたができることは次のとおりです。

public class Assets {
    [Embed(source="MenuAssets.swf", symbol="topSquare")]
    public static const TOP_SQUARE:Class;
    //... more assets ...
    public static function getAssets():Array {
        var ret:Array = [];
        for each (var s:String in describeType(Assets).constant.@name) ret.push(Assets[s]);
        return ret;
    }
}
于 2010-07-16T10:22:53.580 に答える
4

アセットを 1 つの FLA に埋め込むこともできます。FLA のライブラリで、それぞれに「graphics.menu.RightSquare」のようなクラス名を付けてから、SWC としてエクスポートします。SWC を外部ライブラリとしてロードするように Flash Builder プロジェクトを設定します。次に、次のようなことができます。

import graphics.menu.*;

new RightSquare();
于 2010-07-17T00:02:44.060 に答える
4

通常、Flex のメタデータ タグはクラス レベルの変数に適用されます。

変数が Class 型である場合、変数定義の前に[Embed] メタデータ タグを使用する必要があります。

ただし、次のことができます。

[Embed(source="MenuAssets.swf", symbol="topSquare")]
public var TopMenuItem:Class;

[Embed(source="MenuAssets.swf", symbol="leftSquare")]
public var LeftMenuItem:Class;

[Embed(source="MenuAssets.swf", symbol="rightSquare")]
public var RightMenuItem:Class;

[Embed(source="MenuAssets.swf", symbol="botSquare")]
public var BottomMenuItem:Class;

public var menuAssets:Array = [TopMenuItem, LeftMenuItem, 
                               RightMenuItem, BottomMenuItem];
于 2010-07-16T10:10:46.810 に答える