我檢查這個問題,第一: Calling jQuery Function from Flash什麼是一種有效的方式來調用全球範圍內沒有包裝函數的jQuery插件?
如果我們有以下風格的jQuery插件:
(function(){
$.fn.pluginName = function() {
var methods = {
init: function (options) {
var settings = $.extend({}, {}, options); // set your own defaults
$('#flash')[0].initialise(settings);
},
initialised: function (params) {
console.log(params);
}
};
var method = 'init', args = [];
if(0 < arguments.length) {
if('object' === typeof(arguments[0])) {
args = arguments;
} else if('undefined' !== typeof(methods[arguments[0])) {
args = Array.prototype.slice.call(arguments);
args.shift();
method = arguments[0];
}
methods[ method ].apply(this, args);
}
return this;
};
})(jQuery);
而且我們說,我們初始化id爲內嵌Flash對象=「閃光」,然後致電:
$('#controller').pluginName('init',{});
並等待閃光燈回叫。
如果我寫了一個函數,如:
function flashCallBack(data) {
$('#controller').pluginName('init',data);
}
然後我可以登記在AS3這個功能,但有一個方法可以直接調用插件的方法,合適的對象,而不必編寫一個包裝函數比如全局命名空間中的上面那個?
這不起作用:
ExternalInterface.call("$('#controller').pluginName('initialised',"+data+")");
上閃光燈的功能名字符串,也沒有這樣的:
ExternalInterface.call("$('#controller').pluginName('initialised')",data);
任何人都可以點我在此呼籲如何能正確的方向直接作出或澄清,如果它不是一個受支持的操作?
最善良謝謝:) AE
Hi Ascension Systems。是的,我想要做的是'避免'把它放到全球範圍內。將它放入全局範圍允許您使用我放入我的問題的第三種方法,但我現在正在查看的元素現在是直接調用jQuery插件的方法,而不是使用包裝器。例如,如果可以使用ExternalInterface('$ .fn.pluginName','initialised',data);我會嘗試,但這是無效的。不幸的是,我可以找到大多數資源使用包裝器,而不是探索它是不可能的還是需要另一種方法。謝謝! – ArcaneErudite3 2011-05-08 11:28:29
好的,如果你找到一個解決方案,一定要把它發佈!問題在於你依賴於Flash ExternalInteface API的限制,這似乎是問題,因爲VM不能(看似)接受這種類型的參數。我相信這就是爲什麼我能找到的所有解決方案都是提供包裝的解決方案。 – 2011-05-08 11:52:25
我會= D我不確定那裏是否有一個,但是我認爲我也可以嘗試爲其他人提供一個明確的問題和答案,幫助他們或者幫助他們實現這個目標,或者幫助他們更快地創建一個全局函數並節省一點時間= D謝謝阿森鬆系統。出於好奇,我想知道是否可以調用這個:window ['functionName']而不是'functionName',出於同樣的原因。任何想法? – ArcaneErudite3 2011-05-08 11:56:47