as3 远程调用js方法的问题

JavaScript08

as3 远程调用js方法的问题,第1张

远程本地JS方法,参考如下:

本地代码:

<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方法

}

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,然后做想做的事情吧

这个很简单,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])

这样就可以相互传递二进制数据了~