外部画像ファイルを表示するだけで一苦労であった

Flex Builder 3 で作成する flash の中で、サーバ上の画像ファイルを読み込んで表示をしたいのだが、「Action Script 3.0 逆引きクイックリファレンス」などの書籍に載っているやり方だと上手くいかない。
例えば、こんな感じ。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    initialize="initProc()"
    layout="absolute" width="420" height="250"
    borderColor="#D7DBDD" color="#000000"
    backgroundGradientAlphas="[1.0, 1.0]"
    backgroundGradientColors="[#CAC8C8, #CAC8C8]">
   
    <mx:Script>
    <![CDATA[

    import flash.net.URLRequest;
    import flash.display.*;
    import flash.events.*;

    public var gLoader:Loader    = new Loader();

    private function initProc():void {

        var url:URLRequest    = new URLRequest("http://hogehoge.jp/images/qr_code.gif");
        gLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
        gLoader.load(url);

    }

    private function loadComplete(event:Event):void {

        var loaderInfo:LoaderInfo    = event.target as LoaderInfo;
        var bitmap:Bitmap    = loaderInfo.content as Bitmap;

        addChild(bitmap);

    }

    ]]>
    </mx:Script>

</mx:Application>

しかし、これで Flex Builder 3 で swf ファイルを作成しても、エラーも出ないが画像も表示されない。
ちゃんと画像は読み込まれ、Event.COMPLETE イベントも発生しているのだが、画像は表示されないのである。なんでぇ?

Web 上でググっても、だいたい、上のようなソースで上手くいっているようである。何で上手くいかないのかは謎。
FlexBuilder で吐く flash ファイルではこの書き方は駄目・・・とかいうことなんかなあ?識者の人、是非ご教示ください。

まあ、一応、UIComponent クラスを使ったやり方で表示じたいは出来ているので、問題はないのだが、何故に定番のやり方が上手くいかないのかは気になる。

ちなみに、上手くいっているソースは以下のとおり。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    initialize="initProc()"
    layout="absolute" width="420" height="250"
    borderColor="#D7DBDD" color="#000000"
    backgroundGradientAlphas="[1.0, 1.0]"
    backgroundGradientColors="[#CAC8C8, #CAC8C8]">

    <mx:Script>
    <![CDATA[

    import flash.net.URLRequest;
    import flash.display.*;
    import flash.events.*;
    import mx.core.UIComponent;

    public var gLoader:Loader    = new Loader();

    private function initProc():void {

        var url:URLRequest    = new URLRequest("http://hogehoge.jp/images/qr_code.gif");
        gLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
        gLoader.load(url);

    }

    private function loadComplete(event:Event):void {

        var uic:UIComponent    = new UIComponent;

        uic.addChild(gLoader);
        this.addChild(uic);

    }

    ]]>
    </mx:Script>

</mx:Application>

いやぁ、ついつい同じ Flex Builder 3 で作る AIR アプリと同じ感覚で、「サーバ上の画像の表示? HTML コンポーネントを使えばすぐですよ」なんて簡単に見積もってしまったが、実際には flash 用には HTML コンポーネントなんて用意されてないし、よって UIComponent クラスなんかも使うの初めてだし・・・厳しいぃ~(^^;

トラックバック(0)

このブログ記事を参照しているブログ一覧: 外部画像ファイルを表示するだけで一苦労であった

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/1455

コメントする

このブログ記事について

このページは、shinodaが2011年1月24日 22:26に書いたブログ記事です。

ひとつ前のブログ記事は「シーケンシャルに処理しようとすると、Adobe AS3 はなかなかきついな」です。

次のブログ記事は「他のサーバのテキストファイルをロードするとセキュリティエラーなのだ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら