yoshiweb.NET-blog



HOME > blog > Flash > Flash / JavaScript Integration Kit の使い方
« Screenweaver サポート終了 | Flash OOP 勉強会 2005.07.07 »

Flash / JavaScript Integration Kit の使い方

Flash / JavaScript Integration Kit
JavaScript と Flash でデータとかやり取りとかできそうなヤツ。

Flash / JavaScript Integration Kit の使い方↓

HTML から swf 内の function を実行する方法
■ Flash 作業━━━━━━━━━━━━━━━━━━━━━━━━
1. Flash の中に HTML から実行する functon を作ります。

2. Flash の作業デレクトリ(Flaファイルと同じフォルダ)に
source > flash > actionscriptフォルダの中の「comフォルダ」を中身ごとコピーします。

3. fla ファイルに com フォルダの中のクラスファイルを読み込む ActionScript を追加します。
import com.macromedia.javascript.JavaScriptProxy;var proxy:JavaScriptProxy = new JavaScriptProxy(_root.lcId, this);


4.パブリッシュして swf を書き出します。
※2の com フォルダはサイト公開時には必要ありません。

■ HTML 作業━━━━━━━━━━━━━━━━━━━━━━━━
1. Web ディレクトリに「 installation フォルダ」の中の
「 JavaScriptFlashGateway.js 」と「 JavascriptFlashGateway.swf 」を追加します。

2. HTML に Javascript を追加します。
<script type="text/javascript" src="JavaScriptFlashGateway.jsへのパス"></script><script type="text/javascript"><!--var uid = new Date().getTime();var flashProxy = new FlashProxy(uid, 'JavaScriptFlashGateway.swfへのパス');//--></script>


3. SWF を表示する JavaScript を追加します。
<script type="text/javascript"><!--var tag = new FlashTag('コンテンツSWFファイルへのパス', 200, 150); // 最後の引数はWidthとHeightですtag.setFlashvars('lcId='+uid);tag.write(document);//--></script>


4. 以上で Javascript から Flash 内に作った function を実行できると思います。
<a href="javascript:flashProxy.call(' Flashの中で設定した関数 ', '引数');">実行</a>


3E4D - htmlからswf内のメソッドの呼び出し方
投稿者 yoshiweb - Flash - 2005/06/26 - 02:55:21 - Permalink
このエントリーをはてなブックマークに追加
タグ: /

Comments

下記URLのサンプルの「import com.macromedia.javascript.JavaScriptProxy;」で「 'com.macromedia.javascript.JavaScriptProxy' がロードされませんでした。」のエラーが出てしまいます。
Flash MX が Pro版 でないのが原因なのか?

・Using the Macromedia Flash / JavaScript Integration Kit
http://www.communitymx.com/...
投稿者 あじゃ - 2005/09/01 - 09:43:07
こんにちは、あじゃさん。
Windows 版の Flash MX 2004 は asファイルが BOM つきの UTF-8 で保存されてないとダメらしいです。
com フォルダの中の JavaScriptProxy.as と JavaScriptSerializer.as を BOM つきの UTF-8 で保存できるテキストエディタや SEPY などの ActionScript エディタで保存しなおしてはどうでしょう。

SEPY*
http://www.sephiroth.it/pyt...
日本語化ファイル
http://www.yk.rim.or.jp/~su...
BOM について
http://www.atmarkit.co.jp/a...
投稿者 yoshiweb - 2005/09/03 - 19:52:00
日本語は送れないのかな?変な数字になった...。
投稿者 yoshiweb - 2005/09/05 - 11:34:45
JS を改造すれば変な数字にならないようです。
http://www.ark-web.jp/blog/...
http://staff.ark-web.jp/~ta...
投稿者 yoshiweb - 2006/02/17 - 16:58:58
RSSリーダーのようなものを作成しようと思い、flashのXMLオブジェクトでrssファイルを読込み・解析した結果を、htmlに記述したjavaScriptの関数に引数として渡したのですが、この場合は上記の対策では日本語がうまく渡りませんでした。

以下、自分で試した結果です。

1. 読込むrss(xmlファイル)とhtmlのエンコードをUTF-8とし、文字列を渡す前に、Flash側でストリングをescape()で、URLエンコードしてやれば、Netscape 7とFirefoxではOK。IE 6、Operaでは文字化けする。

2. 読込むrss(xmlファイル)とhtmlのエンコードをUTF-8あるいはshift-JISとし、文字列を渡す前に、URLエンコードしないでそのままストリングを送った場合、IE 6のみOK。FirefoxとNetscapeではjavaScriptが呼ばれない。Operaでは文字化け。
javaScirptは苦手なので、できればActionScriptをメインに使って、Ajaxっぽいことをしたかったのですが・・・。どなたか、回避方法をご存知でしたら、ご教授お願いします。
投稿者 ゴン太 - 2006/02/23 - 22:25:56
初めまして。ほとんど情報がないのでここで質問させていただきます。
JavaScript Integration Kitを使って、
1:javascriptでflash呼び出し
2:flashからhtmlファイルを呼び出したものを、その後javascript(innerhtml)に変数としてわたし呼び出し→htmlに表示される
とajaxライクな事をしようと思っていますが、
呼び出すhtmlが大きいと(と言っても数十行)、javascript側で受信完了せずにinnerhtmlをしようとしてるのか表示されません(小さいとOK)。ajaxでは「readyState」ステータスで受信完了を監視していますが、このツールではどういう風にすればよいのでしょうか?どなたかご教授お願いいたします。
投稿者 niku - 2006/05/20 - 07:56:30
>初めまして。ほとんど情報がないのでここで・・・
すみません上記の書き込みは無視してください。(削除してもらってもかまいません)全く見当違いなことを書き込んでしまいました。誠に申し訳ございません
投稿者 niku - 2006/05/22 - 12:20:03
>ゴン太さん
返事が遅くなってしまいすみません。JavaScirptはあまり得意な方ではないのでわかりませんでした。引き続きわかる方がいましたらコメントよろしくお願いします。

>nikuさん
実はJavaScript Integration Kitをあまり使い込んでいないので詳しくないのですが getURL()でJavaScriptを実行するときに文字数が多いと実行されないのと同じ状況かな?と思っています。検証しないまま答えているので違うかもしれませんが...。
http://www.adobe.com/jp/sup...
Flash 8だったらExternalInterfaceクラスで実現できるかも。
投稿者 yoshiweb - 2006/05/24 - 18:47:25
>yoshiweb様
返信ありがとうございます。
「getURL()でJavaScriptを実行するときに文字数が多いと・・」そのとおりです。このことはマルチポスト(マナー違反でごめんなさい)で、制限があるようでした。
「ExternalInterfaceクラス」の情報ありがとうございました。試したところ、きちんと動いた・・・ような動かないような・・・(IE×でFireFox○)(;。;)IEで何で動かないんだろうと悩みまくっています。flashProxy.call(kitの関数)でflashの関数内のExternalInterface.call(javascript、・・)を呼び出しておりますが、上記の通りIE×FF○です。
解決いたしましたら情報としてまた書き込みさせていただきます。
(目指しているところは、getUrlやproxy.callの「カチャ」音なしでinnerHtml(大きめファイル)を実現させようとしています。)
投稿者 niku(食いたい」・・) - 2006/05/27 - 11:03:06
↑再び勘違い(;^_^A アセアセ…
「ExternalInterfaceクラス」で何とかなりそうです。
それと同時に「JavaScript Integration Kit 」の存在意義が謎に・・・
[ユーザーサイド]html(PHP)-javascript-flash(ExternalInterface)-php-[サーバサイド(Mysqlなど)]
とかなりシームレス?(シームって何?ォィw)にでき、色々応用できそうです♪重ね重ね情報のご教授ありがとうございました
投稿者 niku(食った・・うまうま) - 2006/05/27 - 22:42:06
とおもったら、今度はFireFoxで反応すらしない・・(;。;)←愚痴です
(ちなみにFlash付属のサンプルでも起動しませんでした~)
投稿者 niku(眠い(-_ゞゴシゴシ - 2006/05/27 - 23:16:28
はじめまして。Flash初心者です。

上記のFlash 作業では、HTMLから呼び出される関数は .fla ファイルに、以下のように記述すればよいのでしょうか?

function showMessage2(val){
t1 = val;
}
#変数t1は、ダイナミックテキストです。
投稿者 MAKKY - 2006/10/24 - 18:39:25
>MAKKYさん
返事が遅くなってすみません。MAKKYさんの書き方で大丈夫だと思います。
※私が書いたHTMLに一部、無駄なスペースが入っていたので削除しました。m(_ _)m
投稿者 yoshiweb - 2006/10/31 - 12:16:08
初めまして。質問があるのです。
お暇なときに答えてくださったら嬉しいです。

swfファイルをパブリッシュする際に以下の2つのエラーが出ます。
mac OSXのflash2004MXを使用していますが、それが関係しているのでしょうか?
JavaScriptProxy.as: 行 108:controller' という名前のプロパティはありません。
receiving_lc.controller = this;

JavaScriptProxy.as: 行 110:callFlash' という名前のプロパティはありません。
receiving_lc.callFlash = callFlash;
投稿者 YuKI - 2007/01/04 - 23:36:35
はじめまして、YuKIさん。
Flash / JavaScript Integration Kit は Flash MX 2004のころに開発されたものだったと思いますので、2004でも大丈夫なハズですが、いま試せる環境が手元にないのでちょっとわかりません。
引き続き、わかる方がいましたら & 解決したらYuKIさん、書き込みよろしくお願いします!!
投稿者 yoshiweb - 2007/01/05 - 16:32:49
Write more, thats all I have to say. Literally, it
seems as though you relied on the video to make your point.
You definitely know what youre talking about, why throw away your intelligence on just
posting videos to your blog when you could be giving us something enlightening
to read?
投稿者 Сialis - 2018/09/09 - 02:08:10

コメントを書く

※ スパム対策のためコメント内の URL は全角で書いてください。あとで半角に変換します。