本地代码:
<script type="text/javascript">
function showdata(data) {
alert(data)
}
var url = "IP//注意这里,参数可以随便传,method是指服务器要调用的方法名,name参数代表你要传过去 的参数,这样服务器可以对你传的参数做各种数据库操作,最后通过调用你传过去的方法回调回来。
var script = document.createElement('script')
script.setAttribute('src', url)
document.getElementsByTagName('head')[0].appendChild(script)
</script>
服务器(WebForm1.aspx)代码
html:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="RTERP.Web.WebForm1" %>
只留这一句,其他全部删除
后台cs:
protected void Page_Load(object sender, EventArgs e)
{
string name = Request["name"]//接收传过来的参数
string method = Request["method"]//接收传过来的js方法名称
/*
这中间可以是你随便的各种操作,什么读写数据库啊等等,反正最后要给传过来的js方法当参数传过去
*/
Response.Write(method + "('远程服务器返回的数据" + name + "')")//调用那个JS方法
}
这个很简单,ByteArray是什么,字面意思就是字节数组
关键两个字,数组,所以传递数组就行了,至于字节,字节可以用什么表示,整数啊
所以答案呼之欲出了,传递一个整数数组就行了
楼主要求从js给as3传值是吧,只是好奇楼主js里的值来自哪里...
只针对这个问题的话,代码如下:
首先是as3代码:
ExternalInterface.addCallback("sendToActionScript",sendData)function sendData(data:Array):void
{
// 将收到的数组转化为二进制
var ba:ByteArray = new ByteArray()
for(var i:int = 0 i<data.lengthi++)
{
ba[i] = data[i]
}
}
其次是js代码:
var flash_object = document.getElementByID("你的flash元素id")flash_object.sendData([0x100,0x101,0x102])
这样就可以相互传递二进制数据了~
as里不能直接调用到js里的变量,必须以传参的方式来进行,步骤如下:1)as调用js的方法A
ExternalInterface.call("A")
2)方法 A 调用as里的方法 B ,调用时将i作为参数
as里注册一个方法:ExternalInterface.addCallback("B",Real_B)
js里调用:document[flashObjectName].B(i)
其中flashObjectName是flash控件的id名.
3)在as的方法Real_B里,获取到传来的参数i,然后做想做的事情吧