我想写自己的第一个插件。 到目前为止一切正常。但我怎样才能做出变量回报呢? 我尝试使用回调函数,但这并没有真正解决。
最终目标是从swf返回一个变量。
我希望很清楚我想要什么,任何人都可以提供帮助。
欢呼声。
这是我的代码(示例):
jQuery.crossXML = function( options, callback ) {
// set default vars
var defaults = {
'xmlPath' : false,
'method' : 'init'
}
// extend defaults with custom options
var opts = $.extend({}, defaults, options);
//init swf
if(opts.method == 'init'){
var flashvars = {
//currently not required
};
var params = {
menu: "false",
allowScriptAccess:'always'
};
var attributes = {
id: "mySWF",
name: "mySWF"
};
var swfHeight,swfWidth;
if(opts.debug){
swfHeight = "550";
swfWidth = "400";
}else{
swfHeight = "1";
swfWidth = "1";
}
swfobject.embedSWF ( opts.swf, opts.swfContainer, swfHeight, swfWidth, "9", "js/expressInstall.swf", flashvars, params, attributes );
swfobject.addLoadEvent(loadEventHandler);
}
//callback to get data from swf
function callSWF(var) {
var flash = getMovie('mySWF');
flash.callSWF(var);
}
if(opts.method == 'call')
callSWF(opts.myVAR);
}
//executed by flash to get data
function getDataFromSWF(swfDATA) {
alert(swfDATA);/*#################### this, I would like to have as a return #########*/
}
//get flash-object for calback
function getMovie(movieName) {
return document.getElementById(movieName);
}
答案 0 :(得分:0)
好吧,我的方法是将数据附加到特定元素(在这种情况下 - 无论你的swf包含在哪里)
var elem = $("#SQFdiv").eq(0);
jQuery.data(elem, "swfDATAField1", { myVal: swfDATA });
编辑:
$(elem).data("swfDATAField1", myObjData); //preferred method
答案 1 :(得分:0)
我的方法是在插件的选项中使用回调,例如:
$(elem).myPlugin({
"onStateChange": function(obj) {
if (obj.foo == "bar") {
// Do something
}
}
});
然后在你的插件中使用:
settings.onStateChange.call(this, options);