2007年7月14日土曜日

Flex BitmapのサンプルでUIComponentを知る

adobeの公式ドキュメントを参考に
Bitmapを単純に表示するサンプルをつくってみた。



    
    <![CDATA[
        import flash.display.*;

        public function initApp():void
        {
            var bdWidth:Number = 100;
            var bdHeight:Number = 100;
            var bdTransparent:Boolean = true;
            var bdFillColorARGB:uint = 0xFF007090;
            var myBitmapData:BitmapData = new BitmapData(bdWidth, 
                            bdHeight, 
                            bdTransparent, 
                            bdFillColorARGB);
            var myBitmap:Bitmap = new Bitmap(myBitmapData);
            addChild(myBitmap)
        }
    ]]>
    

そしてコンパイルして表示させたらこんなエラーが・・・。
TypeError: Error #1034: 強制型変換に失敗しました。flash.display::Bitmap@112ed41 を mx.core.IUIComponent に変換できません。
Flash初心者にはわけもわからず、
サンプル通りやっただけなのに・・・と少しおどおど。

どうやら、addChild()メソッドに渡せるものはUIComponentのみとのこと。
つまり、新しく作成したオブジェクトが
mx.core.UIComponentのサブクラスでない場合は、
そのオブジェクトをコンテナに関連付ける前に
UIComponentでラップする必要がある。

なのでUIComponentをインクルードして、
addChildする前にUIComponentでBitmapオブジェクトをラップする。


    
    <![CDATA[
        import flash.display.*;

        // UIComponentのインクルード
        import mx.core.UIComponent;

        public function initApp():void
        {
            var bdWidth:Number = 100;
            var bdHeight:Number = 100;
            var bdTransparent:Boolean = true;
            var bdFillColorARGB:uint = 0xFF007090;
            var myBitmapData:BitmapData = new BitmapData(bdWidth, 
                            bdHeight, 
                            bdTransparent, 
                            bdFillColorARGB);
            var myBitmap:Bitmap = new Bitmap(myBitmapData);

            // ここでラップする
            var layer:UIComponent = new UIComponent();
            layer.addChild(myBitmap);

            addChild(layer)
        }
    ]]>
    



これでやっとエラーが出なくなった。
サンプルでつまづくなんて、一人前はまだまだ遠い・・・・。

参考)

0 件のコメント: