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が実行されます。
かなり強引ですが、できました。。。
ほかに良い方法をご存知の方、いらっしゃいましたら、教えてほしいです!