使用Flashvars从MVC中的flash读取

时间:2012-02-28 15:02:58

标签: flash model-view-controller flashvars

我的一所旧学院用闪光灯制作了这个花哨的纸盒,我现在必须将其嵌入网页。我可以用帽子,衬衫,鞋子等来装饰纸娃娃。
每次选择文件夹旁边的项目时,FlashVars参数都会更新。

例如,当按下“帽子”时,FlashVars将发生以下情况。
hat0shoe0 ... ----> hat1shoe0 ...
我的纸上会看到帽子。

有没有办法让FlashVars出来?所以我可以在服务器端使用它?
我更喜欢,如果我能以某种方式将它附加到我的FormCollection,而不是一些funcy JS / jquery :)

我希望你能帮助我,提前谢谢:)

1 个答案:

答案 0 :(得分:1)

Actiosncript 3

要在Actionscript 3中获取Flash变量,您可以执行以下操作:(未经测试的代码)

var myFlashVars:Object = LoaderInfo(this.root.loaderInfo).parameters;
//To get boolean (true/false) values
var hat:Boolean = String(myFlashVars["hat"]) == "1" ? true : false;
var shoe:Boolean = String(myFlashVars["shoe"]) == "1" ? true : false;
//or, To get strings ("0"/"1")
var hatStr:String = String(myFlashVars["hat"]);
var shoeStr:String = String(myFlashVars["shoe"]);

要通过Flash / Actionscript 3将数据发送到服务器,您可以使用URLLoader + URLRequest:

var request:URLRequest = new URLRequest("http://yoursite.com/yourpage.php");
request.data = "hat=" + hatStr + "&shoe=" + shoeStr; //

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, callWasMade);
loader.addEventListener(IOErrorEvent.IO_ERROR, callFailedIOError);
loader.load(request);

function callWasMade(evt:Event):void{
  //Data sent, if needed you can check server response via evt.target.data
}
function callFailedIOError(evt:IOErrorEvent):void {
   //Holy crap I can't reach my server!
}

<强>的JavaScript

如果您想通过JavaScript访问FlashVars,并且如果您正在使用:

swfobject.embedSWF(swfUrlStr,,,,,, **flashvarsObj**,,,)

按照定义here on the docs

为什么不简单地对服务器进行ajax调用,传递你定义的flashvarsObj。使用jQuery,一般的想法是这样的:

$.ajax({
  url: "yourserverpage.php",
  data: flashvarsObj,
})