2016-03-31 11 views
1

Webページを読み込むことがあるAdobe AIRアプリケーションがあります。これらのWebページの1つにハイパーリンクがあります。ハイパーリンクがクリックされると、AS3関数が呼び出されます。私はハイパーリンクがクリックされたときにJavaScript関数を呼び出す方法を知っていますが、JavaScript関数内ではどのようにしてAS3関数を呼び出しますか?Adob​​e AIRアプリケーション内のWebページからAS3コードを呼び出す方法は?

すべての例で私はFlashがウェブページ上のSWFであることがわかります。したがって、DOM要素内にあります。だから、コード例では、彼らはそうのようなDOM要素にAS3の関数を呼び出す:

function sendTextToAS3() { 
    var Txt = document.getElementById('htmlText').value; 
    var flash = document.getElementById("as3_js"); 
    flash.sendTextFromJS(Txt); 
    document.getElementById('htmlText').value = ""; 
} 

しかし、私の場合にはフラッシュは、DOM要素内のSWFではない代わりにフラッシュが全体のAdobe AIRアプリケーションで、そこSWFを持つDOM要素はありません。だから私はDOM要素を介してそれを行うことができない場合私は私のAS3関数を呼び出すのですか?

+0

AIRアプリケーションでWebページを読み込むために 'HTMLLoader'ま​​たは' StageWebView'を使用していますか? – Aaron

+0

stagewebviewを使用している場合は、https://code.google.com/archive/p/stagewebviewbridge/ –

答えて

-1
+0

をご覧ください。「ExternalInterface」はRyanに必要なものではありません。これは、HTMLページがHTMLページに埋め込まれていないため、HTMLページがAIRアプリケーションに読み込まれているため、正しく動作しないという例です。 – Aaron

0

mx:HTMLコンポーネントを使用してhtmlページを表示している場合は、そして、あなたは以下の方法使用してJavaScriptからAS3の関数を呼び出すことができます、AS3コード内

var linkClicked = function() {} 
  • コールバック関数を定義します:HTMLページ内には

    1. を、コールバック関数を定義

      :AS3コード内
      function linkClicked():void { 
          // Your logic here 
      } 
      
    2. は、コールバック関数の定義をオーバーライド簡単にするため

      // var html:HTML = new HTML(); 
      // load page ... 
      // when the page is loaded 
      html.domWindow.linkClicked = linkClicked; 
      

    、ジャバスクリプトlinkClicked関数は、ウィンドウオブジェクトで定義されています。

    ここで、as3コードは、linkClickedをjavascriptから呼び出すたびに実行されます。

  • 関連する問題