2017-03-14 10 views
0

これは以前に聞いたことがあると確信していますが、見つけられません。 FlexプレローダーにSWFムービークリップを表示したいと思います。SWFをFlex 4プリローダーとして使用するにはどうすればよいですか?

私はSparkDownloadProgressBarを拡張しています。私はすべて白い画面になり、最終的にはアプリケーションが読み込まれます。ここで

は、私がこれまで持っているものです。

package 
{ 
    import flash.display.DisplayObject; 
    import flash.display.MovieClip; 
    import flash.events.ProgressEvent; 

    import mx.preloaders.SparkDownloadProgressBar; 

    public class MyPreloader extends SparkDownloadProgressBar 
    { 
     public function MyPreloader() 
     { 
      //backgroundImage = PreloaderGfx; 
      //backgroundImage = "butterfly.swf"; 
      //backgroundColor = 0xFF0000; 
      //visible = true; 
     } 

     //[Embed(source="/runninghorses.swf", symbol="PreloaderGfx")] 
     [Embed(source="/butterfly.swf")] 
     private var PreloaderGfx:Class; 


     override public function initialize():void { 
      super.initialize(); 
      createChildren(); 
     } 

     override protected function createChildren():void { 
      //throw new Error(); 
      super.createChildren(); 
      var displayObject:DisplayObject = getChildAt(0); 

      trace("d width:" + displayObject.width); 
      trace("d height:" + displayObject.height); 

      if (displayObject is PreloaderGfx) { 
       MovieClip(displayObject).play(); 
      } 

     } 

     override protected function showDisplayForDownloading(elapsedTime:int, event:ProgressEvent):Boolean { 
        trace("showDisplayForDownloading: elapsedTime = " + elapsedTime); 
        trace("showDisplayForDownloading:" + event.bytesLoaded + " " + event.bytesTotal + " " + (event.bytesLoaded < event.bytesTotal/2)); 
      return elapsedTime > 100 && 
       event.bytesLoaded < event.bytesTotal/2; 
     } 

    } 
} 

答えて

0

まず、初期化()メソッドでcreateChildren()を呼び出すことはありません。 createChildren()はFlexフレームワークによって自動的に呼び出され、2回呼び出す必要はなく、とにかく動作するはずがありません。あなたの場合、オーバーライドされたinitializeメソッドを完全に削除するだけです。

あなたの主な問題はあなたがswfだけを埋め込んでいることですが、それはまだステージにはありません。 Embedはあなたの資産をあなたのswfにコンパイルしますが、表示はしません。 createChildren()で自分自身を追加する必要があります。そしてあなたはswfを何らかのUIComponentにラップしてステージに追加できるようにする必要があります。イメージは、最も簡単な解決策(テストされていない、ちょうどあなたにアイデアを与えるため)かもしれません:

override protected function createChildren():void 
{ 
    super.createChildren(); 

    var img:Image = new Image(); 
    img.source = PreloaderGfx; 
    addChild(img); 
} 
関連する問題