HTMLとJavaScriptベースのAIRアプリやflash(swf)からJavaScriptを呼び出す方法は、いろいろと紹介されています。
例えば、、、
ActionScript 3.0 から JavaScript を呼び出すって話。 (InnerChild triumphs!!)
ExternalInterfaceクラスを利用すればいいみたいです。
ですが、Flash Builder(4.0よりFlex Builderから名称が変わりました)で作成した、MXMLとasファイルから構成されているようなAIRアプリから、JavaScriptを実行する方法はあまり見かけたことがありませんでした。
そこで、こんな方法を思いつきましたので、ご紹介したいと思います。
HTMLLoderクラスを使います。
こんな感じです。
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init()" width="300" height="300">
<fx:Declarations>
<!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 -->
</fx:Declarations>
<s:Button x="115" y="138" label="Call" id="btnCall" click="onCallClick()"/>
<fx:Script>
<![CDATA[
private function onCallClick():void {
var script:HTMLLoader = new HTMLLoader();
var strScript:String = "<script type='text/javascript'>alert('from AIR');</script>";
script.loadString(strScript);
}
]]>
</fx:Script>
</s:WindowedApplication>
ボタンが1つだけある画面で、そのボタンをクリックするとスクリプトをロードするので、結果JavaScriptが実行されます。
かなり強引ですが、できました。。。
ほかに良い方法をご存知の方、いらっしゃいましたら、教えてほしいです!
