• ベストアンサー

javascriptとflash(as3)の連携

javascriptからflash(as3)を操作する http://www.openspc2.org/reibun/QuickReferenceActionScript/etc/013/ こちらのサイトのサンプルが,非常に参考になるのですが私はas2でなくas3を使っています。as3の場合,どこをどのように変えたらサンプルとして動かすことができるのでしょうか? 分かる方がいたら,詳細を教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

ActionScript 3.0 では ExternalInterface.addCallbackの引数は2つです。 また戻り値もありません(voidです)。 さらに _rotation などというプロパティも(既存では)存在しません。 さらに this のスコープも全く違います。 書かれていらしゃるページのスクリプトは ActionScript 3.0 設定で動作するはずがありません。 というわけで↓ 「javascriptからflash(as3)を操作する - Yahoo!知恵袋」 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1380797983

istudent
質問者

お礼

回答ありがとうございました。知恵袋のほうの回答がとてもわかりやすく実際やってみて動かすことができました。

その他の回答 (1)

  • masa2468
  • ベストアンサー率50% (4/8)
回答No.1

as3でやってみましたが普通にコンパイルできて動きます。 http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/external/ExternalInterface.html にもあるようにこの関数は3.0でも変わってません。 タイムラインで書くのがお好き出ない場合はクラスで下のように書いてください package { import flash.display.MovieClip; import flash.external.ExternalInterface; import flash.text.TextField; public class Main extends MovieClip { public var info_txt:TextField; public var ufo_mc:MovieClip; public function Main() { // constructor code if (flash.external.ExternalInterface.available) { infoObj = flash.external.ExternalInterface.call("getBrowserInfo"); info_txt.text = "appName:" + infoObj.name + "\n"; info_txt.text = info_txt.text + ("platform:" + infoObj.platform); ok = flash.external.ExternalInterface.addCallback("rotate",ufo_mc,rotate); if (! ok) { info_txt.text = info_txt.text + "addCallbackに失敗しました"; }// end if } else { info_txt.text = "ExternalInterfaceは利用できません"; }// end else if } private function rotate(amount) { this._rotation = this._rotation + amount; return (this._rotation); }// End of the function } }

istudent
質問者

お礼

わざわざクラスのほうでも答えて下さりありがとうございます。タイムラインを使っていることも書いておくべきだったかもしれません。この度は回答ありがとうございました。

関連するQ&A