Actionscript与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交互实例程序(修改),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • actionscript与javascript的区别

    当时Netscape的JavaScript使其在与ie的浏览器大战中独占鳌头,而后ie创建了jscript应对Netscape的JavaScript,而事实上jscript基本上抄袭的JavaScript,这也是微软一直备受诟病的一件事,jscript与JavaScript有一些语法上的不一样,但二者均是同一类web开发技术,而且目前流行的是JavaScript,jscript的使用已经越来越少了.另外JavaScript的核心为ecmascript,与actionscript的核心一样,所以学

  • Javascript 调用 ActionScript 的简单方法

    1. 在Flex中,ActionScript调用Javascript是比较简单的,说白了就是,在html里,怎么调用Javascript,在ActionScript就怎么调用就可以了 2. 如果用js调用as,就稍微麻烦一点,其实也比较简单 MXML代码: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com//mxml&

  • JavaScript和ActionScript的交互实现代码

    复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ import flash.external.ExternalInterface; publ

  • JavaScript与ActionScript3两者的同性与差异性

    javascript和actionscript是基于什么标准的,大家知道吗? ActionScript 和 JavaScript 共享一个常用标准:ECMAScript.因此,如果您曾经用 JavaScript 编写过一个条件("if 语句")或迭代("循环语句"),则您可以使用 ActionScript.记住 JavaScript 和 ActionScript 一样是区分大小写的. 先来看看二者的同性与差异性: 共同点: a).二者语法相似,都遵循ECMAScri

  • Actionscript与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=&

  • Android中Java和JavaScript交互实例

    Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本.本文将介绍如何实现Java代码和Javascript代码的相互调用. 如何实现 实现Java和js交互十分便捷.通常只需要以下几步. 1.WebView开启JavaScript脚本执行 2.WebView设置供JavaScript调用的交互接口. 3.客户端和网页端编写调用对方的代码. 本例代码 为了便于讲解,先贴出全部代码 Java代码 复制代码 代码如下: pack

  • android中webview控件和javascript交互实例

    当我们要实现丰富的图文混排效果的时候,我们一般会使用webview,这是一个功能十分强大的的控件,来看看官方的解释: 复制代码 代码如下: A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply display some online content within your Activity. It uses the WebKit

  • javascript实现抽奖程序的简单实例

    昨天开年会的时候看到一个段子说唯品会年会抽奖,结果大奖都被写抽奖程序的部门得了,CTO现场review代码. 简单想了一下抽奖程序的实现,花了十几分钟写了一下,主要用到的知识有数组添加删除,以及ES5 数组新增的indexOf,filter方法, 为了刷新页面后仍能保存已中奖记录,用了localStorage存盘. 刚开始是用随机数直接取编号,发现要剔除已中奖的人很麻烦,如果重复要递归调用,如果中奖的人太多到最后随机数取到已中奖的人概率太大,所以换用两个数组实现,一个记录已中奖的号码,一个记录未

  • Android编程使用WebView实现与Javascript交互的方法【相互调用参数、传值】

    本文实例讲述了Android编程使用WebView实现与Javascript交互的方法.分享给大家供大家参考,具体如下: Android中可以使用WebView加载网页,同时Android端的Java代码可以与网页上的JavaScript代码之间相互调用. 效果图: (一)Android部分: 布局代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&qu

  • Node之简单的前后端交互(实例讲解)

    node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的. 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学node的朋友可以看一看.一方面理解服务端与客户端是如何交互的,一方面更熟悉node开发. 先贴代码:(有兴趣的可以copy到本地自己run一下) 主页面的html index.html: <!doctype> <html> <head> <meta charset=&

  • JavaScript动画实例之粒子文本的实现方法详解

    1.粒子文本的实现原理 粒子文本的实现原理是:使用两张 canvas,一张是用户看不到的canvas1,用来绘制文本:另一张是用户看到的canvas2,用来根据canvas1中绘制的文本数据来生成粒子. 先在canvas1中用如下的语句绘制待显示的文本. ctx1.font = '100px PingFang SC'; ctx1.textAlign = 'center'; ctx1.baseline = 'middle'; ctx1.fillText('Happy New Year',canva

  • Angular2 组件交互实例详解

    1. 组件通信 我们知道Angular2应用程序实际上是有很多父子组价组成的组件树,因此,了解组件之间如何通信,特别是父子组件之间,对编写Angular2应用程序具有十分重要的意义,通常来讲,组件之间的交互方式主要有如下几种: l 使用输入型绑定,把数据从父组件传到子组件 l 通过 setter 拦截输入属性值的变化 l 使用 ngOnChanges 拦截输入属性值的变化 l 父组件监听子组件的事件 l 父组件与子组件通过本地变量互动 l 父组件调用 ViewChild l 父组件和子组件通过服

  • django实现前后台交互实例

    本文介绍了django实现前后台交互实例,分享给大家,希望对大家有所帮助 准备工作: 前端框架:AngularJS+bootstap 数据库:sqlite3 前端代码: index.html <!DOCTYPE html> <html> <head> <link href="/WebApi/scripts/bootstrap/dist/css/bootstrap.min.css" rel="external nofollow"

  • PHP JSON格式数据交互实例代码详解

    在PHP中解析JSON主要用到json_encode和json_decode两个PHP JSON函数,比PHP解析XML方便很多,下面详细介绍下PHP JSON的使用.JSON基础介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON主要有两种结构: "名称/值"对的集合,在PHP中可以理解为关联数组 (associative array). 值的有序列表(An ordered list of values).在PHP中可以理解为

随机推荐