Javascript 调用 ActionScript 的简单方法


Posted in Javascript onSeptember 22, 2016

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" layout="vertical" horizontalAlign="left" backgroundColor="white"
initialize="init()">
<mx:Label text="城市名称:"/>
<mx:List id="cityList" width="" height="" dataProvider="{cities}"/>
<mx:ArrayCollection id="cities">
<mx:String>北京</mx:String>
<mx:String>上海</mx:String>
</mx:ArrayCollection>
<mx:Script>
<![CDATA[
private function init(): void
{
//注册回调函数供JavaScript调用
ExternalInterface.addCallback("callActionScript", asFunctionByJs);
}
private function asFunctionByJs(city: String): void
{
cities.addItem(city); 
}
]]>
</mx:Script>
</mx:Application>

HTML代码(这些代码都是flex builder自动生成的,用于将flash嵌入到网页里,不用仔细看这些代码,注意黄色背景的部分,这是关键部分,是我加入到)

<!-- saved from url=(0014)about:internet -->
<html lang="en">
<!-- 
Smart developers always View Source. 
This application was built using Adobe Flex, an open source framework
for building rich Internet applications that get delivered via the
Flash Player or to desktops via Adobe AIR. 
Learn more about Flex at http://flex.org 
// -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-" />
<!-- BEGIN Browser History required section -->
<link rel="stylesheet" type="text/css" href="history/history.css" />
<!-- END Browser History required section -->
<title></title>
<script src="AC_OETags.js" language="javascript"></script>
<!-- BEGIN Browser History required section -->
<script src="history/history.js" language="javascript"></script>
<!-- END Browser History required section -->
<style>
body {}{ margin: px; overflow:hidden }
</style>
<script language="JavaScript" type="text/javascript">
<!--
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required

var requiredMajorVersion = 9;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 124;
// -----------------------------------------------------------------------------
// -->
</script>
<script type="text/javascript">
function callActionScript(value)
{
//根据id获取flash实例,在这里id是CallAsFromJs,可以从Embed
var flash = (navigator.appName.indexOf ("Microsoft") !=-)?window["CallAsFromJs"]:document["CallAsFromJs"];
//调用ActionScript注册的回调方法
flash.callActionScript(value);
}
</script>
</head>
<body scroll="no">
输入城市名称:<input type="text" id="newCityName"/><input type="button" value="添加城市" onclick="callActionScript(newCityName.value);"/>
<script language="JavaScript" type="text/javascript">
<!--
// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)

var hasProductInstall = DetectFlashVer(6, 0, 65);
// Version check based upon the values defined in globals
var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
if ( hasProductInstall && !hasRequestedVersion ) {
// DO NOT MODIFY THE FOLLOWING FOUR LINES
// Location visited after installation is complete if installation is required
var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
var MMredirectURL = window.location;
document.title = document.title.slice(0, 47) + " - Flash Player Installation";
var MMdoctitle = document.title;
AC_FL_RunContent(
"src", "playerProductInstall",
"FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
"width", "100%",
"height", "100%",
"align", "middle",
"id", "CallAsFromJs",
"quality", "high",
"bgcolor", "#ffffff",
"name", "CallAsFromJs",
"allowScriptAccess","sameDomain",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer"
);
} else if (hasRequestedVersion) {
// if we've detected an acceptable version
// embed the Flash Content SWF when all tests are passed
AC_FL_RunContent(
"src", "CallAsFromJs",
"width", "%",
"height", "%",
"align", "middle",
"id", "CallAsFromJs",
"quality", "high",
"bgcolor", "#ffffff",
"name", "CallAsFromJs",
"allowScriptAccess","sameDomain",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer"
);
} else { // flash is too old or we can't detect the plugin
var alternateContent = 'Alternate HTML content should be placed here. '
+ 'This content requires the Adobe Flash Player. '
+ '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
document.write(alternateContent); // insert non-flash content
}
// -->
</script>
<noscript>
<object classid="clsid:DCDBE-AED-cf-B-"
id="CallAsFromJs" width="%" height="%"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="CallAsFromJs.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="CallAsFromJs.swf" quality="high" bgcolor="#ffffff"
width="%" height="%" name="CallAsFromJs" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>
</noscript>
</body>
</html>

总结,js调用as,大概分为3步:

1.as使用ExternalInterface.addCallback注册回调函数

2.在js函数中根据flash在网页中的id获取实例

3.用上面获取到flash实例,调用as的函数

以上所述是小编给大家介绍的Javascript 调用 ActionScript 的简单方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
textContent在Firefox下与innerText等效的属性
May 12 Javascript
谈谈impress.js初步理解
Sep 09 Javascript
jquery实现加载进度条提示效果
Nov 23 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
Jun 06 Javascript
url中的特殊符号有什么含义(推荐)
Jun 17 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
Sep 08 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
Dec 02 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
Apr 07 jQuery
微信小程序仿微信运动步数排行(交互)
Jul 13 Javascript
JavaScript ES6箭头函数使用指南
Dec 30 Javascript
Vue页面切换和a链接的本质区别详解
Nov 12 Javascript
JS数组Reduce方法功能与用法实例详解
Apr 29 Javascript
JavaScript与ActionScript3两者的同性与差异性
Sep 22 #Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
Sep 22 #Javascript
自制微信公众号一键排版工具
Sep 22 #Javascript
IONIC自定义subheader的最佳解决方案
Sep 22 #Javascript
详解Node.js中的事件机制
Sep 22 #Javascript
AngularJS通过$sce输出html的方法
Sep 22 #Javascript
JavaScript 随机验证码的生成实例代码
Sep 22 #Javascript
You might like
php下Memcached入门实例解析
2015/01/05 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
js写的评论分页(还不错)
2013/12/23 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
jQuery遍历DOM元素与节点方法详解
2016/04/14 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
JavaScript 中使用 Generator的方法
2017/12/29 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题
2020/07/21 Javascript
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
在Python中使用模块的教程
2015/04/27 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
2019/06/18 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
python创建学生管理系统
2019/11/22 Python
python多进程重复加载的解决方式
2019/12/13 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
《商鞅南门立木》教学反思
2014/02/16 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
个人党性分析总结
2015/03/05 职场文书
商业计划书之服装
2019/09/09 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python