flash与html及服务器的通信

flash与html及服务器的通信
前一段时间有机会接触到flash编程,学习了一些方法,在次记录以备后用:)
1.html与flash通信
html要将自己的参数传给flash内部,我目前知道只有一次机会,也就是flash播放器加载的时候传入。传入的方法有2种:
1>直接url拼接。也就是模拟get传参。
 <object  classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="750" height="656">
<param name="movie" value='/test/test.swf?param1=mushui&param2=mushui2'>
<param name="quality" value="high">
<param name="allowScriptAccess" value="sameDomain" />
<embed src='/test/test.swf?param1=mushui&param2=mushui2' type="application/x-shockwave-flash"
quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" width="750" height="656"></embed>
</object>

在写swf文件地址的时候,在后面拼接参数值对。
在flash文件中要获得html传入的参数,可以直接用_root.param1和_root.param2获得。想一想应该是_root对象就想js中的window对象是一个全局对象,外部通过播放器传入的参数就是直接放入_root作用域下。
2>通过FlashVars参数传入
在上面的<object>标签中加入

<param name="FlashVars" value="param1=mushui&param2=mushui2"/>


这种方法应该是模拟了上边的方法,flash获取参数与上边相同
2.flash与服务器通讯
1>LoadVars类
当只是向服务器发送消息不获得反馈可以用loadVar.send(url,target,[method]):Boolean;
参数介绍:url:请求的地址

target:[_blank;_top;_self;_parent]
method:[post|get]

例如:

var my_lv:LoadVars = new LoadVars();
my_lv.playerName = playerName_txt.text;
my_lv.playerScore = playerScore_txt.text;
my_lv.send("setscore.cfm", "_blank", "POST");


如果要获得返回信息,可以用loadVar.sendAndLoad(url,resutlObject,[method])方法。
参数介绍:url:同上

resultObject:也必须是一个LoadVars对象获得服务器返回的参数。作为容器,通常我们传入发送请求的loadVars对象,用自己作为容器。
服务器返回的参数也是以值对的方式返回。例如:key=value1&key2=value2...的形式。获得返回参数必须要在loadVar的回调函数onLoad里获得,表明从服务器返回了。在onLoad 的方法里,如果传入发出请求的对象,也就是自己,可以通过this.key获得服务器返回的参数。否则用resultObject对象获得返回的参数。
例如:

var submitListener:Object = new Object();
submitListener.click = function(evt:Object) {
var result_lv:LoadVars = new LoadVars();
result_lv.onLoad = function(success:Boolean) {
if (success) {
result_ta.text = result_lv.welcomeMessage;
} else {
result_ta.text = "Error connecting to server.";
}
};
var send_lv:LoadVars = new LoadVars();
send_lv.name = name_ti.text;
send_lv.sendAndLoad("http://www.flash-mx.com/mm/greeting.cfm", result_lv, "POST");
};
submit_button.addEventListener("click", submitListener);



2>XML对象
上面的对象,返回少量数据或文本数据可以,但是要返回大量数据,用xml对象比较适合。它返回的是一个dom对象。在flash中解析获得数据。
它也有,xml.send()和xml.sendAndLoad(url,XML对象)方法,和上边一样。同样需要在onLoad回调方法里解析dom树。
例子:
1.
var my_xml:XML = new XML("<highscore><name>Ernie</name><score>13045</score></highscore>");
my_xml.contentType = "text/xml";
my_xml.send("http://www.flash-mx.com/mm/highscore.cfm", "_blank");

2.
var login_str:String = "<login username=\""+username_txt.text+"\" password=\""+password_txt.text+"\" />";
var my_xml:XML = new XML(login_str);
var myLoginReply_xml:XML = new XML();
myLoginReply_xml.ignoreWhite = true;
myLoginReply_xml.onLoad = myOnLoad;
my_xml.sendAndLoad("http://www.flash-mx.com/mm/login_xml.cfm", myLoginReply_xml);
function myOnLoad(success:Boolean) {
if (success) {
if ((myLoginReply_xml.firstChild.nodeName == "packet") &&
(myLoginReply_xml.firstChild.attributes.success == "true")) {
gotoAndStop("loggedIn");
} else {
gotoAndStop("loginFailed");
}
} else {
gotoAndStop("connectionFailed");
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值