2011-07-11 19 views
0

私の目標は、データベースから複数のデータセット(画像とテキスト)を取り出し、それぞれのFlashビデオプロジェクトをコンパイルして保存するflash/as3プログラムを作成することです。この仕事をする最善の方法は何でしょうか?私はチェックしましたが、現在の状態でフラ​​ッシュプロジェクトを公開する関数を見つけることができませんでしたので、私はすべてのプロセスを1つのflash/as3ファイルで実行することはできません。私の唯一の他の選択肢は、他のプログラム/バッチファイルがデータベースのクエリを処理し、フラッシュプログラムを起動し、1つの完全なプロジェクトを構築するために必要なデータのパラメータを渡すことによって複数のflash/as3ムービーをコンパイルすることですデータのセット。 .swfファイルを自動的に作成するのに役立つプログラムがありますか? init paramsをflash/as3プロジェクトに渡すことも可能ですか?この上の任意の思考やアイデアは非常に感謝される:)!Flash/AS3プロジェクトの作成を自動化

+0

他の人のサービスを作成することを考えているのですか、開発用のバッチツールを作成しようとしていますか? – weltraumpirat

+0

私はdevバッチツールを作ろうとしています。 – CodedMonkey

答えて

2

あなたの質問を完全に理解しているかどうかはわかりませんが、Flex SDKのコマンドラインコンパイラmxmlc.exeを使用して、Flashプロジェクトを動的にコンパイルできます。

フラッシュアプ​​リケーション用のコードを.asファイルとして生成することができます。このファイルでは、イメージ用の埋め込みステートメントとテキスト用の文字列変数を使用できます。この生成されたメインクラスは、これらの "動的データ"を扱うために他のクラスのコードを使用すべきです。その後、生成されたクラスをフラッシュアプ​​リケーションの開始点としてコンパイラに渡すと、結果として.swfが返されます。

編集

ここでは、動的データを処理する静的クラスの例を示します。

package 
{ 
    import flash.display.Sprite; 
    import flash.text.TextField; 

    public class Base extends Sprite 
    { 

     public function Base() 
     { 
     } 

     public function init(dyn:Main) : void 
     { 
      // add a new instance of the embedded image 
      addChild(new dyn.DynamicImage1()); 
      // add a new text field with the dynmaic text 
      var text:TextField = new TextField(); 
      text.text = dyn.DynmaicText1; 
     } 

    } 

} 

そして、ここで生成されたメインクラス

package 
{ 
    import flash.display.Sprite; 
    import flash.events.Event; 

    public class Main extends Sprite 
    { 

     [Embed(source = '../relative/path/to/dynamic/image.png')] 
     public var DynamicImage1:Class; 

     public var DynmaicText1:String = "This is directly from Database"; 

     public function Main():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); 
     } 

     private function init(e:Event = null):void 
     { 
      var base:Base = addChild(new Base()) as Base; 
      base.init(this); 
     } 

    } 

} 

たとえば今、開始点としてコンパイラにMainを与えます。

これは単なる例に過ぎず、配列Vector<T>とインタフェースなどを使用してはるかに一般化することができます。

+0

ありがとう、それは私が必要とするものにかなり近く聞こえる!しかし、1つの質問ですが、動的データをプロジェクトにどのように渡すのですか?あなたは他のクラスについて言及しましたが、ロードするものとロードする場所を教えるのに何か必要なクラスのように聞こえます。 – CodedMonkey

+0

これらのクラスは、作成アプリケーションによって即時に生成される必要があります。クラスコード全体を生成すると、すべての "動的データ"はハードコード化されます。つまり、 'var myString:String ="データベースのデータ ";'画像は '[Embed]'属性を使ってハードコーディングできます。何も渡す必要はなく、動的パーツのコードを生成する必要があります。他のすべてのアプリケーションロジックは、生成されたクラス内で使用できる静的なASクラスに存在する可能性があります。私は自分の投稿に簡単な例を追加して編集します。 – DanielB

関連する問題