如何使用Javascript向Actionscript发送值

0 javascript actionscript-3

我想将一个float变量发送到Actionscript.

我用window.document.setVariable(),但它只支持类型String,并忽略0和指向(.)

我尝试使用parseFloat(),并value * 1在JavaScript,但它不工作.

Pra*_*adi 7

你的问题很模糊.不过,这里有:

有两种(编辑为3种)方法可以从html中将变量导入Flash.两者都使用这个ExternalInterface

(1):将变量拉入ActionScript

//JavaScript:
var myVariable=3.14159; //or whatever you want to set it as

function getMyVariable() {
    return myVariable;
}


//Flash
var myVariable:Number=ExternalInterface.call("getMyVariable");
Run Code Online (Sandbox Code Playgroud)

(2):将变量推入ActionScript

//Flash
ExternalInterface.addCallback("pushVar", varPushed);
var myVariable:Number=0;
function varPushed(x:Number):void {
    myVariable=x;
}



//JavaScript
var myVariable=3.14159; //or whatever you want to set it as
var fl = document.getElementById('myflashobject');
fl.pushVar(myVariable);
Run Code Online (Sandbox Code Playgroud)

编辑 (3):使用flashVars

如果使用swfObject,则使用以下行添加flashVars:

var flashvars = {}; 
    flashvars.myVariable=3.14159
...
...
swfobject.embedSWF( 
    "FlashVarTest.swf", "flashContent", "100%", "100%", swfVersionStr, 
    xiSwfUrlStr, flashvars, params, attributes); 
Run Code Online (Sandbox Code Playgroud)

如果你使用<object>标签,那么你添加flashVars如下:

 <object id='mySwf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' height='100%' width='100%'>
        <param name='src' value='FlashVarTest.swf'/>
        <param name='flashVars' value='myVariable=3.14159'/>
        <embed name='mySwf' src='FlashVarTest.swf' height='100%' width='100%' flashVars='myVariable=3.14159'/>
    </object>
Run Code Online (Sandbox Code Playgroud)

无论您使用嵌入方法,都可以在AS3中访问flashVars,如下所示:

如果您使用的是Flex SDK:

var myVariable:Number = FlexGlobals.topLevelApplication.parameters.myVariable;
Run Code Online (Sandbox Code Playgroud)

如果您不使用Flex SDK:

var myVariable:Number =Number(LoaderInfo(this.root.loaderInfo).parameters.myVariable);
Run Code Online (Sandbox Code Playgroud)