2011-05-25 15 views
1

1つのSWFを別のSWFに読み込んでスキニングするという概念実証を設定しようとしています。セットアップはこれです:添付されたSWFを別のSWFにロードしますか?

  • app.fla、UIコンポーネントが

AppMain.asは明らかに、アプリケーションのロジックがすべて含まれています含まれている添付のActionScriptクラス、AppMain.as

  • skin.flaを、持っていました。私は、その特定のスキンで定義されたインスタンス名に基づいて、ロードされたスキンファイルに含まれるUIコンポーネントに影響を与えたいと考えています。

    私はmyTextFieldのインスタンス名とTextFieldを持っているのであれば、たとえば、私はAppMain.asでプログラムそのテキストフィールドのtextプロパティを設定できるようにしたいと思います。

    flashvarパラメータに基づいてスキンファイルをロードするには、エクスポートapp.swfはこのように見えたHTMLドキュメントにロードされます:これは単に#swf<div>app.swfをロード

    <html> 
        <head> 
         <title>Test</title> 
        </head> 
        <body> 
         <div id="swf"><!--//--></div> 
         <script src="jquery.js"></script> 
         <script src="swfobject.js"></script> 
         <script> 
          $(document).ready(function() { 
           $('#swf').flash({ 
            swf: 'app.swf', 
            width: 550, 
            height: 400, 
            flashvars: { 
             skin: 'skin.swf' 
            } 
           }); 
          }); 
         </script> 
        </body> 
    </html> 
    

    。どのように私の主なアプリケーションのSWFにスキンSWFを取得するための任意の助けに感謝します。私は現在、次のものを持っています(これはうまくいきません)。

    package 
    { 
        import flash.display.Loader; 
        import flash.display.MovieClip; 
        import flash.net.URLRequest; 
    
        public class AppMain extends MovieClip 
        { 
         public function AppMain() 
         { 
          var myLoader:Loader = new Loader(); 
          self.addChild(myLoader); 
          var myRequest:URLRequest = new URLRequest('skin.swf'); 
          myLoader.load(myRequest); 
         } 
        } 
    } 
    

    ロードしようとしているスキンは、赤い背景があるので簡単です。ロードされているかどうかはわかります。それは私のHTMLページではありません私はまだ白い背景を持ってエクスポートしています。

    上記のエラーがありますか? Flash Professional CS5のコンソールは、「コンパイルエラー」タブでエラーを表示していません。

  • 答えて

    0

    あなたのコードを少し修正してみましたが、うまく機能しました。まず第一に、この行を確認してください。

    self.addChild(myLoader); 
    

    あなたがここに書いたものを、あなたのコードが完了している場合は、自己の変数が宣言されていない(ただし、この場合には、あなたはエラー「未定義のプロパティのアクセス」を取得する必要があります)。 その変数が宣言されている場合は、その変数が表示リストに追加されているかどうかを確認します。その場合、問題が再現される可能性があります。追加されていない場合、ロードされたものは表示されず、エラーも発生しません。

    まだ役立たない場合は、Loaderインスタンスにいくつかのイベントリスナーを追加して、ロードプロセス中に発生したことを確認してください。

    myLoader.contentLoaderInfo.addEventListener(Event.INIT, initHandler); 
        myLoader.contentLoaderInfo.addEventListener(Event.OPEN, openHandler); 
        myLoader.contentLoaderInfo.addEventListener(Event.UNLOAD , unLoadHandler); 
        myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE , completeHandler); 
        myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR , ioErrorHandler); 
        myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS , progressHandler); 
        myLoader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS , httpStatusHandler); 
        myLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR , securityErrorHandler); 
    

    他にご質問がありましたら、お尋ねください。

    乾杯

    タマスGronas

    +0

    おかげで、タマス。私はこれらの提案を行って、私の所見とともにここに報告します。 –

    +0

    興味深い。スキンSWF *がロードされました。私はスキンSWFの背景色を赤に設定しましたが、テキストを(黄色で)追加し、白い背景に黄色のテキストが表示されたときにロードされると透明でした。 –

    +0

    'AppMain'コンストラクタメソッドでflashvarを取得するにはどうすればよいですか?私は 'this.loaderInfo.parameters.skin'を試して" skin "というflashvarを選びましたが、これはうまくいかないようです。何か案は? –

    関連する問題