MXML自体を外部アプリケーションからパラメータ(XML param)として渡し、Flash Playerに動的にロードしてページを作成することは可能ですか? 例えば
xml = <mx:canvas><mx:label text="hello" /></mx:canvas> を Flex に渡すと、flex はラベル コントロールを含むキャンバスを作成する必要があります。それに関連する例はありますか。
ありがとう
MXML自体を外部アプリケーションからパラメータ(XML param)として渡し、Flash Playerに動的にロードしてページを作成することは可能ですか? 例えば
xml = <mx:canvas><mx:label text="hello" /></mx:canvas> を Flex に渡すと、flex はラベル コントロールを含むキャンバスを作成する必要があります。それに関連する例はありますか。
ありがとう
MXML コードは、Flash Player で何かを実行する前に、ActionScript にコンパイルする必要があります。MXML は、実行時に Flash Player によって解釈されません。
コンポーネントのプロパティをXMLに格納し、className属性を設定するだけで、XMLをロードする場合に、XMLの属性を作成したコンポーネントのプロパティに設定する関数を使用できます。これはclassName属性で決定されます。
あなたがしたいことは不可能です。brd6644が言ったように、mxmlはフラッシュプレーヤーによって解釈されるswfのバイトコードにコンパイルされます。mxml(およびactionscriptでさえ)はFlashPlayerによって理解されません。
そうは言っても、動的MXMLに使用できるJSPライブラリがあります。ここを参照してください:
http://www.adobe.com/devnet/flex/articles/server_perf_05.html
そのリンクは古く、現在、更新されたリンクを見つけることができないようですが、プロジェクトはまだ存在しています。実際には、ColdFusionの一部としてまだ出荷されていると思います。これにより、要求に応じてJITをコンパイルする動的mxmlを作成できます。もちろん、そのためにパフォーマンスが大幅に低下しますが、動的MXMLが必要な場合は、オプションです。
このコメントを見つけたら、より良いリンクで更新します。
私の最初の推測では、「いいえ」です。タイプは「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);
}
}