JavaScriptからFlashの関数を呼ぶ - Flash Java Script Integration Kit
2006年2月17日
JavaScriptからFlashの関数を呼ぶ - Flash Java Script Integration Kit
カテゴリー: XP・アジャイル(システム開発) , オープンソース
SEの竹村です。お久しぶりです(^^ゞ
最近、Ajaxを開発案件で扱うことが増えてきました。
HTMLのリンクをクリックすると非同期通信を行って、取得したデータをHTMLのある領域に出力する。
通常のAjaxコールではこのような流れになると思います。
今回は、非同期通信を行うためのイベントをFlash側に持たせて、取得したデータをHTMLに出力する場合の話をします。
追記 by 竹村 (on 2008/05/13) -----
JavaScriptからFlashの関数を呼ぶ:getURLでなくExternalInterfaceを使用する利点
http://www.ark-web.jp/blog/archives/2008/05/javascriptflash_externalinterface.html
上記記事を公開しました。こちらもJavaScriptとFlashの相互通信のライブラリについて紹介しているので合わせてご覧いただければと思います。
----- 追記ここまで
最近、JavaScriptでもフェードインやスライドなどのエフェクトができるようになってきましたが、
やはりFlashの方が表現力、ブラウザ互換性が上だと思います。そのFlashを使ってAjaxを起動するためのインターフェイスを制作し、FlashからJavaScriptの関数を呼ぶというのが今回のポイントです。
FlashからJavaScriptの関数を呼ぶためのライブラリはこちらで提供されています。
osflash: Flash JavaScript Integration Kit
http://osflash.org/flashjs
ライブラリをダウンロードしてきたら、source\flash\actionscript に置いてあるcomフォルダを
Flashの置いてあるディレクトリにコピーしてから、Flash側に下記のコードを書くだけです。
import com.macromedia.javascript.JavaScriptProxy;
var proxy:JavaScriptProxy = new JavaScriptProxy();
proxy.call("javaScriptMethodName", "arg1", new Object());
javaScriptMethodNameがJavaScript側の関数名、arg1が引数になります。
例えば、JavaScriptとして↓このように記述した場合は「arg1」がalertされるでしょう。
<script type="text/javascript">
<!--
function javaScriptMethodName(arg) {
alert(arg);
}
//-->
</script>
このJavaScriptの関数側でFlashから渡ってきた引数をもとに非同期通信を行って
結果をHTMLに出力すればよいわけですね。
さて、このライブラリではJavaScriptからFlashの関数を呼ぶことも可能です。
この方法については、こちらの方の解説が分かりやすかったです。
yoshiweb.NET-blog: Flash / JavaScript Integration Kit
http://yoshiweb.net/blog/index.php?itemid=106&catid=2
それで、コメント欄に
> 日本語は送れないのかな?変な数字になった...。
とありました。これは私の方でも確認できました。
JavaScriptFlashGateway.jsを追ってみたところ、JavaScriptFlashGateway.swfを出力する時に
flashvarsでJavaScriptからの引数を渡しているのですが、こいつのエンコードにFlashのデコードが
対応していないために起きている不具合でした。
JavaScriptから渡した引数が「ほげほげ」だった時、flashvarsにはencode()が適応され、%u307B%u3052%u307B%u3052 がセットされますが、UNICODEのエスケープはFlash側でデコードできないために、307B3052307B3052 という値をFlashは受け取っていたわけです。
対応方法としては、JavaScriptFlashGateway.jsの下記の部分を変更します。
もともとのコード
qs += 't'+(i)+'=undf';
break;
case 'string':
qs += 't'+(i)+'=str&d'+(i)+'='+escape(args[i]);
break;
case 'number':
qs += 't'+(i)+'=num&d'+(i)+'='+escape(args[i]);
修正後のコード
qs += 't'+(i)+'=undf';
break;
case 'string':
qs += 't'+(i)+'=str&d'+(i)+'='+encodeURI(args[i]);
break;
case 'number':
qs += 't'+(i)+'=num&d'+(i)+'='+escape(args[i]);
この対応方法は、osflashのバグトラックにも載っていました。
I18N problem: multi-bytes characters are broken;
JavaScriptFlashGateway.js should NOT use the escape() function
http://mirror1.cvsdude.com/trac/osflash/flashjavascript/ticket/41
FlashとJavaScriptとAjax、それぞれの長所を生かしてうまくコラボレーションさせると
リッチ・ユーザーインタフェースとしての表現が大幅に広がるかもしれないですね。
投稿者 竹村 : 2006年2月17日 14:20
|
|
|
タグ:
この記事は参考になりましたか?
興味があるかも?
« 前の記事:Webサイトのアクセシビリティで裁判─商用サイトに求められる姿勢
» 次の記事: 2006年 最もイケそうなWeb 2.0サービス("The Most Promising Web 2.0 Software of 2006") 前編
トラックバック
このエントリーのトラックバックURL:
http://www.ark-web.jp/blog/mt-tb.cgi/184
【!】本記事への言及がない記事からのトラックバックは、削除する場合があります。
Taggingをテストしています
- Web 2.0 (83)
- Google (62)
- Ajax (51)
- RSS (44)
- SNS (41)
- Movable Type (40)
- Zen Cart (38)
- ビジネスブログ (38)
- ECサイト (37)
- アークウェブ (34)
- CMS (30)
- オープンソース (28)
- オンラインショップ (25)
- CSR (25)
- ブログ (24)
- Yahoo! (24)
- Podcast (24)
- Web2.0 (23)
- SEO (22)
- EC (21)
- A-Form (21)
- CGM (21)
- マッシュアップ (20)
- MTOS (20)
- SEM (19)
- アクセシビリティ (18)
- サーチエンジン (18)
- プラグイン (18)
- Videocast (17)
- JavaScript (16)
- マーケティング (16)
- UI (15)
- API (14)
- YouTube (13)
- Twitter (13)
- MovableType (13)
- ケータイ (13)
- Skype (12)
- システム開発 (12)
- Blogosphere (12)
- RSSフィード (12)
- ソーシャルブックマーク (12)
- Google Maps (11)
- PlugIn (11)
- Vodcast (11)
- Mashup (10)
- Flash (10)
- Webマーケティング (10)
- Microsoft (10)
- mixi (10)
- Total Keywords: 849
- Total Keywords(Sum): 2502
- by Tagwire Plugin
アークウェブの本
Zen Cartによるオンラインショップ構築・運用テクニック―オープンソース徹底活用
内容充実のZen Cart公式本(v1.3対応)がついに発表です。アークウェブのスタッフをはじめZen-Cart.JPの中心メンバーが共著で執筆しました。続きを読む
人気記事
ランキング
新着はてブ
カテゴリー
- A-Form, MTプラグイン
- Ajax (システム開発)
- CMS(コンテンツマネジメント・システム)
- CSR(企業の社会的責任)
- Miqqle
- OpenSocial (システム開発)
- PukiWiki
- RIA (システム開発)
- Ruby on Rails(システム開発)
- SEM・サーチエンジン広告
- SEO・サーチエンジン最適化
- Snippy(SNS・ソーシャルブックマーク)
- Web 2.0
- WebSig24/7
- Webアクセシビリティ
- Webデザイン
- Webマーケティング
- Webユーザビリティ
- Web・ITニュースクリップ
- XP・アジャイル(システム開発)
- Zen Cart(オンラインショップ構築)
- ecoったー
- mixiアプリ
- necoったー
- アークウェブ
- アークウェブのCSR
- オープンソース
- セキュリティ(システム開発)
- テスト(システム開発)
- データベース
- ビジネスブログ・MovableType
- ビッグイシュー(The Big Issue)
- マッシュアップ
- 唐松(アクセス解析)
サイト内を検索中...









(準備中)




