Actionscript与javascript交互实例程序(修改)_javascript技巧

mxml页面:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="100%" height="100%" xmlns:code="http://code.google.com/p/flex-iframe/"
creationComplete="initApp()">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import flash.external.*; //引入ExternalInterface
public function initApp():void
{
ExternalInterface.addCallback("myJsFunction",myAsFuncn);
button.addEventListener(MouseEvent.CLICK,buttonClick);
}
public function myAsFuncn(js:String):String
{
return "js:"+js+"访问了as:"+asInput.text;
}
private function buttonClick(event:MouseEvent):void
{
trace(asInput.text);
label.text = "as 调用 js ...";
var result:String = callJS(asInput.text);
label.text = "返回值:" + result;
}
private function callJS(arg:String):String
{
return ExternalInterface.call("jsMethod",arg);
}
private function asMethod(arg:String):String
{
label.text = arg;
return "js 调用了 as 成功!";
}
]]>
</fx:Script>
<s:VGroup width="100%" height="100%">
<s:VGroup width="100%">
<mx:Button x="169.5" y="162" label="点击" fontSize="14" id="button"/>
<mx:TextInput id="asInput" x="122" y="76"/>
<s:Label id="label"/>
</s:VGroup>
</s:VGroup>
<code:IFrame source="MyHtml.html" width="500" height="500"/>
</s:Application>

html页面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MyHtml.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script language="JavaScript">
function callAs( )
{
var myFlexfun=document.getElementById("myFlexFun");
var result=myFlexfun.myJsFunction(jsinput.value);
alert(result);
mess.value=result;
}
function jsMethod(arg) {
alert("as 调用 js 成功,参数为:" + arg);
return ("as 调用 js 成功!");
}
</script>
</head>
<body>
<table>
<tr>
<td>
<object id= "myFlexFun" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="400" height="300">
<param name="movie" value="test.swf" />
<param name="quality" value="high" />
<embed src="test.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="400" height="300"></embed>
</object>
</td>
</tr>
<tr>
<td>
<input type="input" id="jsinput"/>
<input type="button" value="点我看效果" onclick="callAs()"/>
<input type="input" id="mess"/>
</td>
</tr>
</table>
</body>
</html>

如果试过以上的方法,会发现在被嵌入的Html见面中又嵌入了一个父级的swf文件,如下

这种情况显然不是我想要的结果。于是修改下代码,如下:

mxml页面

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="100%" height="100%" xmlns:code="http://code.google.com/p/flex-iframe/"
creationComplete="initApp()">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import flash.external.*;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent; //引入ExternalInterface
public function initApp():void
{
ExternalInterface.addCallback("sayCallBack",callBack);
}
public function callBack(str:String):String{
return "Hello "+str;
}
protected function button1_clickHandler(event:MouseEvent):void
{
ExternalInterface.call('sayHelloWorld',' Jim');
var array:Array = new Array();
array.push("a", "b","c","d","e");
myIFrame.callIFrameFunction('jsMethod',array,function(str:String):void{
label.text=str;
});
}
public static function str():String{
return "aaa";
}
]]>
</fx:Script>
<s:VGroup width="100%" height="100%">
<s:BorderContainer width="100%" height="300" backgroundColor="#00ffaa">
<s:HGroup width="100%">
<s:Button label="调用js" click="button1_clickHandler(event)"/>
<mx:Button x="169.5" y="162" label="点击" fontSize="14" id="button"/>
<mx:TextInput id="asInput" x="122" y="76"/>
<s:Label id="label"/>
</s:HGroup>
</s:BorderContainer>
<s:BorderContainer width="100%" height="300">
<code:IFrame id="myIFrame" source="com/MyHtml.html" width="100%" height="100%"/>
</s:BorderContainer>
</s:VGroup>
</s:Application>

html页面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>MyHtml.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<script language="JavaScript">
function callAs( )
{
var ifrm =window.parent.xiSwfUrlStr;
if (ifrm)
{
alert(ifrm);
}else{
alert('false');
}
}
function jsMethod(arr) {
alert("as 调用 js 成功,参数为:"+arr[4]);
return ("as 调用 js 成功!");
}
function callA(){
var str=window.parent.document.getElementById("test").sayCallBack("Bill");
if (str)
{
alert(str);
mess.value=str;
}else{
alert('false');
}
}
</script>
</head>
<body>
<table>
<tr>
<td >
<object id= "myFlexFun" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%">
<param name="movie" value="../test.swf" />
<param name="quality" value="high" />
</object>
</td>
</tr>
<tr>
<td>
<input type="input" id="jsinput"/>
<input type="button" value="点我看效果" onclick="callA()"/>
<input type="input" id="mess"/>
</td>
</tr>
</table>
</body>
</html>

这样,html的js脚本就可以直接调用as脚本,而不需要再次嵌入swf文件。

以上所述是小编给大家介绍的Actionscript与javascript交互实例程序(修改),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索javascript
, 交互
, actionscript

actionscript入门实例、actionscript 3.0实例、actionscript实例教程、vrml script 交互、script javascript,以便于您获取更多的相关知识。

时间: 2025-01-27 04:06:36

Actionscript与javascript交互实例程序(修改)_javascript技巧的相关文章

Javascript复制实例详解_javascript技巧

在做项目时有一个需求,是需要复制内容到剪切板,因为有众多浏览器,所以要兼容性很重要. 1.最简单的copy,只能在IE下使用 使用clipboardData方法 <script type="text/javascript"> function copy(){ window.clipboardData.setData("text",document.getElementById("name").value); alert("T

JavaScript闭包实例详解_javascript技巧

一.充电 1.一切(引用类型)都是对象,对象是属性的集合. 2.函数是一种对象,但是函数却不像数组一样--你可以说数组是对象的一种,因为数组就像是对象的一个子集一样.但是函数与对象之间,却不仅仅是一种包含和被包含的关系,函数和对象之间的关系比较复杂,甚至有一点鸡生蛋蛋生鸡的逻辑. function Fn() {this.name = '王福朋';this.year = 1988;} var fn1 = new Fn(); var obj = { a: 10, b: 20 };等价于var obj

JavaScript编写Chrome扩展实现与浏览器的交互及时间通知_javascript技巧

和浏览器的交互 1.书签使用chrome.bookmarks模块来创建.组织和管理书签.也可参看 Override Pages,来创建一个可定制的书签管理器页面. 1.1.manifest.json 中配置 { "name": "My extension", ... "permissions": [ "bookmarks" ], ... } 对象和属性: 签是按照树状结构组织的,每个节点都是一个书签或者一组节点(每个书签夹可包

微信小程序使用第三方库Immutable.js实例详解_javascript技巧

前言 Immutable JS 提供一个惰性 Sequence,允许高效的队列方法链,类似 map 和 filter ,不用创建中间代表.immutable 通过惰性队列和哈希映射提供 Sequence, Range, Repeat, Map, OrderedMap, Set 和一个稀疏 Vector. 微信小程序无法直接使用require( 'immutable.js' )进行调用,需要对下载的Immutable代码进行修改,才能使用. 原因分析 Immutable使用了UMD模块化规范 (f

Javascript 实现放大镜效果实例详解_javascript技巧

Javascript 实现放大镜效果 今天做任务的时候,有一个任务就是让实现电商网站常用的放大镜效果,类似于这样的放大镜效果效果,之前并没有做过这种放大镜效果,刚开始的思路是对图片进行裁剪,但是后来发现实在是难以实现,于是求助了万能的谷歌,发现一个很好的思路就是,展示区是一小块可视区域,给他一个图片,超出可视区域的部分设为隐藏,有了这个思路,这个效果就能够很好的实现了,先看一下HTML结构! <div id="pic_wrap"> <div id="floa

JavaScript语言精粹经典实例(整理篇)_javascript技巧

数据类型 JavaScript 是 弱类型 语言,但并不是没有类型,JavaScript可以识别下面 7 种不同类型的值: 基本数据类型 1.Boolean 2.Number 3.String 4.null 5.undefined 6.Symbol Object 1.Array 2.RegExp 3.Date 4.Math 5.... 可以使用 typeof 判断数据类型,操作符返回一个字符串,但并非返回的所有结果都符合预期 typeof false // "boolean" type

javascript性能优化之事件委托实例详解_javascript技巧

本文实例分析了javascript性能优化之事件委托.分享给大家供大家参考,具体如下: 为下面每个LI绑定一个click事件 <ul id="myLinks"> <li id="goSomewhere" >Go somewhere</li> <li id="doSomething" >Do something</li> <li id="sayHi" >Sa

javascript定义类和类的实现实例详解_javascript技巧

本文实例讲述了javascript定义类和类的实现.分享给大家供大家参考,具体如下: 最近在几个群上经常看到有人问在一个类里的一个 function 怎么调用 this. 定义后公开的方法.现发一篇类实现的随笔. 首先说说类,在一个类里我们会有以下的几个特征: 1. 公有方法 2. 私有方法 3. 属性 4. 私有变量 5. 析构函数 我们直接看一个例子: /***定义类***/ var Class = function(){ var _self = this;//把本身引用负值到一变量上 va

javascript常用经典算法实例详解_javascript技巧

本文实例讲述了javascript常用算法.分享给大家供大家参考,具体如下: 入门级算法-线性查找-时间复杂度O(n)--相当于算法界中的HelloWorld //线性搜索(入门HelloWorld) //A为数组,x为要搜索的值 function linearSearch(A, x) { for (var i = 0; i < A.length; i++) { if (A[i] == x) { return i; } } return -1; } 二分查找(又称折半查找) - 适用于已排好序的