2011-09-02 8 views
0

これは私を苦労させています。私は過去にSWFObjectを使って作業しました。これは素晴らしいことです。しかし、JavaScriptを使用しないという要件があります。だから、私がフラッシュの例を網の上でやろうとすると、彼らは私のために働くようには見えない。繰り返すSWFObjectを含まないFlashVarsは純粋なAS3プロジェクトでは機能しません

ステップ:

1).swfファイルがあるどこのindex.htmlでのFlexまたはFlash Builderの

2)を使用して、純粋なAS3プロジェクトを作成し、名前と値のペアのサフィックスを追加します。 test.swf?foo = bar

3)メインクラスSpriteのコンストラクタで、trace(root.loaderInfo.parameters.foo)を実行します。期待

:バーが、私はそれがすべてではロードされていないかのようにまだ動作しません、将来的には5秒を評価するために)(のsetTimeoutを試した未定義

として描きます。

 <noscript> 
     <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="${width}" height="${height}" id="${application}"> 
      <param name="movie" value="${swf}.swf?foo=bar" /> 
      <param name="quality" value="high" /> 
      <param name="bgcolor" value="${bgcolor}" /> 
      <param name="allowScriptAccess" value="sameDomain" /> 
      <param name="allowFullScreen" value="true" /> 
      <!--[if !IE]>--> 
      <object type="application/x-shockwave-flash" data="${swf}.swf?foo=bar" width="${width}" height="${height}"> 
       <param name="quality" value="high" /> 
       <param name="bgcolor" value="${bgcolor}" /> 
       <param name="allowScriptAccess" value="sameDomain" /> 
       <param name="allowFullScreen" value="true" /> 
      <!--<![endif]--> 
      <!--[if gte IE 6]>--> 
       <p> 
        Either scripts and active content are not permitted to run or Adobe Flash Player version 
        ${version_major}.${version_minor}.${version_revision} or greater is not installed. 
       </p> 
      <!--<![endif]--> 
       <a href="http://www.adobe.com/go/getflashplayer"> 
        <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" /> 
       </a> 
      <!--[if !IE]>--> 
      </object> 
      <!--<![endif]--> 
     </object> 
    </noscript> 

AS3は

package 
{ 
import flash.display.LoaderInfo; 
import flash.display.Sprite; 

public class FlashVarsTest extends Sprite 
{ 
    public function FlashVarsTest() 
    { 
     var paramsObj:Object = 
      LoaderInfo(root.loaderInfo).parameters; 
     trace("foo="+paramsObj["foo"]); 
    } 
} 

}

これは動作しません。次のいずれか

package 
{ 
import flash.display.LoaderInfo; 
import flash.display.Sprite; 
import flash.events.Event; 

public class FlashVarsTest extends Sprite 
{ 
    public function FlashVarsTest() 
    { 

     this.addEventListener(Event.ADDED_TO_STAGE, init) 
    } 

    private function init(event:Event):void 
    { 
     var paramsObj:Object = 
      LoaderInfo(root.loaderInfo).parameters; 
     trace("foo="+paramsObj["foo"]); 

    } 
} 

}

+1

作品 – hooleyhoop

+0

は、我々はあなたのAS3コードを見ることができます:両方の出力がroot.loaderInfo

package { import flash.display.Sprite; import flash.events.Event; import flash.external.ExternalInterface; public class Main extends Sprite { public function Main() { if(ExternalInterface.available) ExternalInterface.call("console.log",root.loaderInfo.parameters.foo); (stage) ? init() : addEventListener(Event.ADDED_TO_STAGE,init); } private function init(evt:Event = null):void { if(evt) removeEventListener(Event.ADDED_TO_STAGE,init); if(ExternalInterface.available) ExternalInterface.call("console.log",root.loaderInfo.parameters.foo); } } } 

HTMLに関連する遅延が描画されていないことを証明し、期待通りに出てきますか? – Taurayi

+0

' shanethehat

答えて

1

更新OPコードを見た後

あなたのエラーは、IE以外のオブジェクトタグである:

<object type="application/x-shockwave-flash" data="${swf}.swf?=foobar" 

お奨めのタイプミスが大好き!


URLの一部として渡す代わりに、FlashVarsオブジェクトのparamタグを使用しようとしましたか?

<object classid="blah blah"> 
    <param name="movie" value="test.swf" /> 
    <param name="FlashVars" value="foo=bar" /> 
    <embed src="test.swf" FlashVars="foo=bar" /> 
</object> 

明らかに私は余分なものをここでは省いていますが、これは変数の受け渡しがどのように行われるかを示すはずです。ただし注意点として

、ピーターdeHannによって、このブログが示すように、URLは、AS3で動作するはずのに変数を渡す:http://blogs.adobe.com/pdehaan/2006/07/using_flashvars_with_actionscr.html

テスト自分自身:

を私はFirebugのに出力するのExternalInterfaceを使用コンソール。私にとっては予想通り

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <head> 
     <title></title>   
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

     <style type="text/css" media="screen"> 
      html, body { height:100%; } 
      body { margin:0; padding:0; overflow:auto; text-align:center; 
        background-color: #ffffff; } 
      object:focus { outline:none; } 
      #flashContent { display:none; } 
     </style>   

    </head> 
    <body> 
      <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="Main"> 
       <param name="movie" value="Main.swf?foo=bar" /> 
       <param name="quality" value="high" /> 
       <param name="bgcolor" value="#ffffff" /> 
       <param name="allowScriptAccess" value="sameDomain" /> 
       <param name="allowFullScreen" value="true" /> 
       <!--[if !IE]>--> 
       <object type="application/x-shockwave-flash" data="Main.swf?foo=bar" width="100%" height="100%"> 
        <param name="quality" value="high" /> 
        <param name="bgcolor" value="#ffffff" /> 
        <param name="allowScriptAccess" value="sameDomain" /> 
        <param name="allowFullScreen" value="true" /> 
       <!--<![endif]--> 
       <!--[if gte IE 6]>--> 
        <p> 
         Either scripts and active content are not permitted to run or Adobe Flash Player version 
         10.2.0 or greater is not installed. 
        </p> 
       <!--<![endif]--> 
        <a href="http://www.adobe.com/go/getflashplayer"> 
         <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" /> 
        </a> 
       <!--[if !IE]>--> 
       </object> 
       <!--<![endif]--> 
      </object>  
    </body> 
</html> 
+0

のTHXシェーンは動作しませんが、それが試されていますし、それが動作しない、という固定あなたのエラー –

+0

作品を、あなたが説明するようにswfファイルのパスに追加しないと。私はあなたのコードで間違った何かを持って恐れている。 – shanethehat

+0

あなたはplzは、あなたが作成した.as3クラスを貼り付ける気にしますか?Thxを –

関連する問題