書き物

技術とか作った物の話とか愚痴文句感想など

描画の要?

MXMLでのアプリケーション開発は、コンポーネントをペタペタ貼り付けて作っていきますが、

当然これらのコンポーネントだけで開発するわけではありません。

用意したビットマップを貼り付けたり、物体を大量生成してニヤニヤしたりもするはずです。


僕がこれまでActionScriptプロジェクトで多く使用してきた「Sprite」ですが、

コンポーネントである「Panel」に「addChild」してみると、

TypeError: Error #1034: 強制型変換に失敗しました。flash.display::Sprite@100ef51 を mx.core.IUIComponent に変換できません。

というランタイムエラーがでてうまくいきません。

「Sprite」はFlexプロジェクト中では使えないのか?

と思っていましたが、適当に調べていくうちに「Image」というコンポーネントの存在を知りました。


具体的なコードでの実験を示します。

まずは「Panel」に直接「Sprite」を「addChild」します。

var p:Panel = new Panel();
p.addChild(new Sprite());

これを実行しますと、上で書いたようなランタイムエラーが出ます。

「Sprite」の代わりに「Shape」で試しても同じようなランタイムエラーが出ます。


これを「Panel」と「Sprite」の間に「Image」を挟んで「addChild」してみます。

var p:Panel = new Panel();
var img:Image = new Image();
img.addChild(new Sprite());
p.addChild(img);

これで実行してみますと、特にエラーも無く問題無く動くようです。

「Sprite」の代わりに「Shape」で試しても結果は同じです。


この結果から『予想』します。

「Image」へならこれまでの「Sprite」や「Shape」などの描画の基本を「addChild」できる。

つまりActionScriptプロジェクトで行ってきた描画方法が使える。

はたしてこの考えでいいのでしょうか。

今後試してみます。