0

この方法でas3でライブラリswfsを作成していますが、魅力的に機能します(遅いmxmlcコンパイラを除く):

package {
 import flash.display.Sprite; 
 public class Library extends Sprite {
   [Embed(source="assets/test.png")]
      public var TestBitmap:Class; 
 }
}

同様のライブラリをswfmillで作成したいと考えています。次のswmfill単純なxmlを試しました:

<movie version="10">

FlashDeveloper のエクスプローラーでライブラリを調べると、as3 ライブラリはクラスとシンボルの両方をエクスポートしますが、swfmill ライブラリはシンボルのみをエクスポートすることがわかります。私のホスト アプリケーションは、次の方法で as3 ライブラリ アセットにアクセスしています。

private var loader:Loader = new Loader();

private function onCreationComplete():void {
    this.loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
}

private function onComplete(e:Event):void {
    var resourceClass:Class = loader.contentLoaderInfo.applicationDomain.getDefinition("Library") as Class;
    var resources:Object=new resourceClass();
    var testBitmapClass:Class = resources['TestBitmap'] as Class;   
    var testBitmap:Bitmap = new testPngClass();
    this.addChild(testBitmap);
}

しかし、エクスポートされたswfmillクラスがないため、明らかに何も説明できません...

swfmill はこの方法でクラスをエクスポートすることを期待されていますか? そうでない場合、シンボルをクラスとしてインスタンス化せずにシンボルにアクセスする方法はありますか?

ジョナス

4

1 に答える 1

1

要するに、違います。私もこれを調べてきました。私はFlashIDE、Haxe、flexを使用しているので、コンテンツにアクセスするためのさまざまな方法をswfに埋め込んで概説します。

シンボルを直接インスタンス化する方法があるようには見えません。アセットがFlashIDEによってエクスポートされた場合、通常は、アクションスクリプトがシンボルを取得するためにエクスポートするプロパティを設定します。Haxeでは、swfmillxmlのクラスと一致するクラスを指定します。flexを使用すると、クラスを定義し、Embedメタデータタグを使用して、swfを埋め込むことでシンボルにアクセスします。http://livedocs.adobe.com/flex/3/html/help.html?content=embed_4.html

このスクリプトは、エクスポートクラスを生成するのに役立つ場合があります。http://wiki.disemia.com/HaXe_SWFMILL_Resource_Converter

AS3を使用している場合、コマンドラインからプロジェクトをコンパイルする場合は、とにかくmxmlcを使用する必要があります。速度が問題になるため、fcshの使用を検討する必要があります。

于 2009-12-10T02:49:36.390 に答える