私は、txominpeluの提案に非常によく似たコールバックをswfObjectライブラリで機能させるための良い解決策を見つけたと思います。-> callbackFn
基本的に無名関数を作成してコールバックを返すという、うまく機能しているようです。なぜそれがすべて間違っているのか、私をまっすぐに設定してくれる人に感謝します。(私は通常、最初は間違っています)
私はそれを定義するために使用する私の手でコード化されたJavaScriptファイルでうまく機能するで使用swfobject.embedSWF
しています。今、私はCoffeeScriptに移行しようとしています。これはとても素晴らしいです。したがって、CoffeeScriptは代わりにコンパイルされます。私の元のswfObject.embedSWFは、CoffeeScriptでコンパイルされたバージョンのコールバックでは機能しません。callbackFn
function callbackFn() {}
callbackFn = function() {};
// original javascript file approach
swfobject.embedSWF( "swf/flashContent.swf", "site-content",
"100%", "100%", "10.0.0", false,
flashvars, params, attributes, callbackFn );
// original javascript callback
function callbackFn() {
log( "--> callbackFn invoked ");
// ... do stuff
}
私はCoffeeScriptを初めて使用しますが、名前付き関数を取得するのはクラスを使用する場合だけだと思います
swfObject wikiで詳しく説明されているオプションのコールバックパラメーターの代わりに、無名関数を試すことから始めました。それから私は、CoffeeScriptバージョンで動作するようなものを手に入れることができるかもしれないと考えました。これが私が終わったところです。
# part of .coffee file
swfobject.embedSWF "swf/flashContent.swf", "site-content",
"100%", "100%", "10.0.0", false,
flashvars, params, attributes, -> callbackFn()
callbackFn = (evt) ->
console.log "--> callbackFn invoked #{evt}"
# do other stuff
# part compiled .js file
swfobject.embedSWF("swf/flashContent.swf", "site-content",
"100%", "100%", "10.0.0.", false,
flashvars, params, attributes, function() {
return callbackFn();
});
callbackFn = function() { ... }
また、callbackFnを介してイベントを渡すことも検討しましたが、これは機能しているようです。
# .coffee file swf
@swfobject.embedSWF "swf/flashContent.swf", "site-content",
"100%", "100%", "10.0.0.", false,
flashvars, params, attributes, -> callbackFn(@swfobject)
callbackFn = (evt) ->
console.log "--> callbackFn invoked #{evt}"
# do other stuff