js调用Flex中的方法并向flex中传参及flex调用js示例

网络编程 2025-03-24 20:22www.168986.cn编程入门

深入JS与Flex之间的交互:在test.swf与test.html的联动中

拥有一个swf文件,test.swf,与其相对应的自动生成的html文件,test.html。在构建交互体验的过程中,通过iframe在test.jsp文件中引入了test.html,从而间接引入了swf文件。现在,我们需要在test.jsp页面向Flex传递参数并调用其方法。这个过程涉及到一些精妙的技术细节。

要在jsp页面中创建一个调用Flex的方法,我们称之为initSWF。在这个方法中,我们通过获取iframe中的对象来与Flash内容进行交互。具体代码如下:

```javascript

function initSWF(){

// 获取iframe中的swf对象

var obj = window.frames["rightframe"].ReverseQuery;

// 调用Flash中的方法

var start = "<%=startPoint%>";

var end = "<%=endPoint%>";

obj.showParams(start,end);

}

```

在html文件中,有一个方法,允许Flex调用本页面的js方法。该方法为:

```javascript

function initSWF(){

parentitSWF();

}

```

在Flex端,我们需要定义一个方法,允许JS调用,并使用ExternalInterface进行注册:

```actionscript

public function showParams(start:String,end:String):void{

Alert.show(start);

Alert.show(end);

}

// 在初始化时暴露给JS调用

ExternalInterface.addCallback("showParams", showParams);

```

需要注意的是,如果在页面加载时Flash内容未能成功加载,会报找不到对象的错误。我们需要确保在swf文件加载完成后,再调用其中的方法。一种策略是,在Flash初始化时调用JS的initSWF方法:

```actionscript

// 调用载入页面的initSWF方法

ExternalInterface.call("initSWF");

// 注意要在注册对外方法之后进行。

```

在实际操作中,需要注意以下几点:

1. Flex中调用的JS方法必须写在引入swf的文件中。由于我们在jsp中引入了html,因此只能在html中的js中调用父页面的js方法。

2. 在jsp中引用swf文件时,需要通过window.frames["rightframe"]来获取。这是因为iframe的名字为"rightframe",而swf作为object的id为"ReverseQuery"。

实现JS与Flex之间的交互需要深入理解两者之间的通信机制,以及如何在不同的环境中正确地调用方法。只有这样,才能确保交互的流畅性和稳定性,为用户带来更好的体验。大功告成之际,也需要注意一些细节问题,比如在Flex中如何正确地调用JS的方法,以及在何种时机进行调用等。

上一篇:微信小程序 常用工具类详解及实例 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by