- 2008年7月28日 23:51
- Flash
via:
ExternalInterfaceでActionScriptの関数呼び出し失敗への対策 - blog.katsumata.tv
ExternalInterfaceのはまりどころを再検証 -tech.kayac.com
jsとswfを繋げるためにExのcallとaddCallbackを使いまくるんですが、ときどきaddCallbackが動作しないことがあります。
これのために土日月を費やしてしまいました。
//swf.objidはFlashを書き出しているSWFObjectの第二引数
function call0(){
var player = document.all? window[swf.objid] : document[swf.objid];
player.OverlayCallBack0()
}
普通はこれでFlash側の OverlayCallBack0() 関数が動くはずなんですが、うんともすんとも言いません。そこで、もう諦めて「ブッダ」読んで寝ようと思ったときに
try{
call0();
}catch(e){
alert(e)
}
ってやってみたら、alertされて「TypeError:player.OverlayCallBack0 is not a Function.」と表示されました。これはエラーがキャッチされた証拠です。で、このエラーは何かというと、flash側の用意ができていないよ、ということらしい。Firebugコンソールで普通に「call0()」とタイプするとちゃんとFlashは動きます。どういうこっちゃ。
上記のエントリでは、JSの関数を実行したいときはASから呼べ、と書いてありますが逆にASをJSから確実に呼びたいときはどうすればいいんでしょうねぇ? Flash自体はローディングを用意してあるので、ロードが完了したらcallbackして、その先の処理を進めているから、Flashがロードできていない状態というのはありえないわけです。じゃあなぜ??
ASを呼ぶにはASから? JSを呼ぶのはASから、というのは楽ですが、ASを呼ぶためのJSが is not a Function. なのは意味不明です。。。。
- Newer: javascriptの関数リテラル(っていうの?)が分かった気がした
- Older: そろそろbridal2.0について一言言っておくか
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://ryow.net/mt/mt-tb.cgi/350
- Listed below are links to weblogs that reference
- ExternalInterfaceのaddCallbackが実行されないエラー from ryow.net Blog