2

MXML自体を外部アプリケーションからパラメータ(XML param)として渡し、Flash Playerに動的にロードしてページを作成することは可能ですか? 例えば

xml = <mx:canvas><mx:label text="hello" /></mx:canvas> を Flex に渡すと、flex はラベル コントロールを含むキャンバスを作成する必要があります。それに関連する例はありますか。

ありがとう

4

4 に答える 4

3

MXML コードは、Flash Player で何かを実行する前に、ActionScript にコンパイルする必要があります。MXML は、実行時に Flash Player によって解釈されません。

于 2009-03-03T03:12:09.473 に答える
1

コンポーネントのプロパティをXMLに格納し、className属性を設定するだけで、XMLをロードする場合に、XMLの属性を作成したコンポーネントのプロパティに設定する関数を使用できます。これはclassName属性で決定されます。

于 2010-06-25T03:22:36.930 に答える
1

あなたがしたいことは不可能です。brd6644が言ったように、mxmlはフラッシュプレーヤーによって解釈されるswfのバイトコードにコンパイルされます。mxml(およびactionscriptでさえ)はFlashPlayerによって理解されません。

そうは言っても、動的MXMLに使用できるJSPライブラリがあります。ここを参照してください:

http://www.adobe.com/devnet/flex/articles/server_perf_05.html

そのリンクは古く、現在、更新されたリンクを見つけることができないようですが、プロジェクトはまだ存在しています。実際には、ColdFusionの一部としてまだ出荷されていると思います。これにより、要求に応じてJITをコンパイルする動的mxmlを作成できます。もちろん、そのためにパフォーマンスが大幅に低下しますが、動的MXMLが必要な場合は、オプションです。

このコメントを見つけたら、より良いリンクで更新します。

于 2009-03-03T13:59:58.697 に答える
0

私の最初の推測では、「いいえ」です。タイプは「XML」であり、Actionscript 3 には「eval」はありません。簡単に検索したところ、「いいえ」と言わざるを得ません。これは不可能です。

ただし、作成したアプリで同様のことを行いました。

私がしたことは、オブジェクトの種類といくつかのプロパティ (x、y、幅、高さなど) をデータベースに格納することでした。このデータはリモート オブジェクト呼び出しから返され、これらのオブジェクトは実行時に作成されます。これにより、達成しようとしているのと同様の効果が得られます。

例えば:

var resultAC:ArrayCollection = event.result as ArrayCollection;
var tmpCanvas:Canvas;

    for(var i:int = 0; i < resultAC.length; i++)
    {
      if(resultAC.getItemAt(i).type == "Canvas")
      {
         tmpCanvas = new Canvas();
         tmpCanvas.x = resultAC.getItemAt(i).x;
         tmpCanvas.y = resultAC.getItemAt(i).y;
         ...
         parent.addChild(tmpCanvas);
      }
    }
于 2009-03-03T03:00:24.383 に答える