- 浏览: 555154 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (350)
- Sybase (30)
- SQL SERVER2005 (14)
- 数据库 (27)
- SSH框架 (27)
- WebService (21)
- 下载-软件收藏 (15)
- 随笔-日常使用 (9)
- Flex 相关 (13)
- Linux (11)
- Web (64)
- XML相关 (9)
- Socket相关 (1)
- Elipse (3)
- 统计报表 (11)
- 线程相关 (3)
- Java相关 (37)
- JAVASCRIPT (19)
- JAVA反射 (3)
- JSP标签 (3)
- 随笔-其他 (2)
- 随笔-设计模式 (3)
- 随笔-架构师相关 (1)
- 下载-源码 (7)
- 下载-帮助文档 (1)
- 下载-插件 (6)
- 技术-.NET (2)
- 技术-Excel VBA (8)
- 应用-地图相关 (2)
- 应用-GSM短信猫 (5)
- 应用-单点登录 (3)
- Android相关 (3)
最新评论
-
sucheng2016:
发现jconn4.jar 里面有getBlob(String) ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
sucheng2016:
java.lang.UnsupportedOperationE ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
ok123zxx:
没下文了吗
通过 Tomcat Advanced I/O 获得高性能的 Ajax tocmat6+CometProcessor -
q1345111:
大家这个问题 尚未完成方法 com.sybase.jdbc3. ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver -
bdk82924:
heshujing217187 写道问题同1楼一样,求解!换j ...
Sybase15驱动包的问题com.sybase.jdbc3.jdbc.SybDriver
转:http://blog.csdn.net/hopestar2/archive/2010/06/29/5702171.aspx
最近做的一个项目要用到Flex与Javascrip之间的交互,所以花时间学习了一下。在
网上找了好多关于这方面的文章,但是介绍的都不是很全面,主要是例子程序写的不是很
好,很多都还存在一些问题,download下来后,发现还要做些修改才能运行。
先分别简要介绍一下Flex调用Javascript函数和Javascript调用Flex函数。
1. Flex调用Javascript函数
Flex通过使用ExternalInterface.call()函数来调用Javascript中的方法,此函数的原型为
ExternalInterface.call(function_name:String, parameter:String),参数function_name
是调用的javascript的函数名,parameter是Javacript函数需要的参数。此函数还可以有返回值
,也就是说Javascript函数可以返回一个结果给ExternalInterface.call()这个函数调用.ExternalInterface
封装了对浏览器支持的检查,可以用available属性来查看。
先举个简单的例子:
Javascript函数:
function sayHelloFromJs(message)
{
alert(message); //message是由flex端传过来的
return "echo from javascript:" + message; //返回给Flex端的消息
}
Flex调用:
var str:String = ExternalInterface.call("sayHelloFromJs","Hello,Javascript.");
Alert.show(str); //显示javascript端返回的消息
2. Javascript调用Flex函数:
Flex端需要注册和页面交互的Javascript方法。通过ExternalInterface的addCallback()函数实现,
addCallback()函数的原型为addCallback(js_function:String, flex_function:Function),第一个参数
js_function是Javascript可以调用的方法名称,第二个参数flex_function是Javascript回调的Flex方法.
举个简单的例子:
Flex端:
public function sayHelloFromFlex(message:String):String
{
Alert.show(message); //Javascript端传过来的消息
var str:String = "echo from flex:" + message;
return str; //返回给Flex端的消息
}
public function initApp()
{
ExternalInterface.addCallback("sayHelloFromFlex",sayHelloFromFlex);//注册与页面交互的方法
}
Javascript端:
在javascript端首先要获取swf对象的引用,我们假设我们已经拿到了该引用,为MyFlexApp.
swf的获取将在下面专门介绍。
<script language = 'Javacript' charset = 'uft-8'>
function testFlexFunc()
{
var strMessage = MyFlexApp.sayHelloFromFlex("Hello, Flex");
alert(strMessage);
}
</script>
<button onclick="testFlexFunc()"> TestFlexFunc</button>
3. Javascript端获取swf对象的引用:
在Javascript代码中,我们首先要定义一个object标签对象,object标签对象的大概格式
如下:
<object type='application/x-shockwave-flash'
data='FlexAndJs.swf' width='600' height='480'
name='test' id='MyFlexApps'>
<param name='allowScriptAccess' value='always' />
<param name='movie' value='FlexAndJs.swf' />
<param name='quality' value='high' />
<param name='scale' value='noScale' />
<param name='wmode' value='transparent' />
<embed src="FlexObject.swf" width="640" height="378"
name ="FlexObject"
play="true"
loop="false"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>
定义好这个节点标签后,我们还需要在写一个JS函数来获取该swf对象的引用。
function getSWFObject(movieName)
{
if(document[movieName])
{
return document[movieName];
}else if(window[movieName]){
return window[movieName];
}else if(document.embeds && document.embeds[movieName]){
return document.embeds[movieName];
}else{
return document.getElementById(movieName);
}
}
然后上面2中的testFlexFunc()函数的那条调用Flex函数的语句可以改写为:
var strMessage = getSWFObject["MyFlexApps"].sayHelloFromFlex("Hello, Flex");
最后给出一个完整的例子供大家参考,包括Flex端和JS端的完整代码:
Flex代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp()"
layout="absolute" width="200" height="160">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
public function sayHelloFromFlex(message:String):String{
Alert.show(message);
var str:String = "Echo from Flex: "+ message;
return str;
}
public function initApp():void {
Security.allowDomain("*");
Security.allowInsecureDomain("*");
ExternalInterface.addCallback("sayHelloFromFlex",sayHelloFromFlex);
}
public function invokeJsFunc():void {
var str:String = ExternalInterface.call("sayHelloFromJs","Hello,Javascript.");
Alert.show(str);
}
]]>
</mx:Script>
<mx:Button x="39" y="68" label="Invoke JS Function" click="invokeJsFunc()"/>
</mx:Application>
Html代码:
<html>
<head> </head>
<body scroll="no">
<script>
function sayHelloFromJs(value){
alert(value);
return "Echo from Js: " + value;
}
function invokeFlexFunc(){
var message = "Hello,Flex.";
var str = getSWFObject("MyFlexApps").sayHelloFromFlex(message);
alert(str);
}
function getSWFObject(movieName)
{
if(document[movieName])
{
return document[movieName];
}else if(window[movieName]){
return window[movieName];
}else if(document.embeds && document.embeds[movieName]){
return document.embeds[movieName];
}else{
return document.getElementById(movieName);
}
}
</script>
<object type='application/x-shockwave-flash'
data='FlexAndJs.swf' width='200' height='160'
name='test' id='MyFlexApps'>
<param name='allowScriptAccess' value='always' />
<param name='movie' value='FlexAndJs.swf' />
<param name='quality' value='high' />
<param name='scale' value='noScale' />
<param name='wmode' value='transparent' />
</object>
<input type="button" value="InvokeFlexFunction" onclick="invokeFlexFunc()"/>
</body>
</html>
swfobject.embedSWF js直接加载SWF文件
转自:http://snanychen.blog.163.com/blog/static/75197159201010253381109/
JS+flash的焦点幻灯片既能大方得体的展示焦点信息,也能美轮美奂的展示图片,越来越多的网站使用这种焦点幻灯的表现方法。很 多童鞋在下载这方面的素材代码的时候,往往会因为展示出来的是flash,觉得难以修改。其实不然,只要细心寻找答案,会发现很多参数是可以在html页 面直接修改的。下面就介绍如何利用swfobject.embedSWF来修改输出的flash的属性。
swfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfurl, flashvars, params, attributes)有5个必须的参数和4个可选的参数: swfUrl(String,必须的)指定SWF的URL。 <script type="text/javascript" src="http://snanychen.blog.163.com/blog/swfobject.js"></script> <script type="text/javascript"> 怎样配置你的Flash内容? id play
<script type=“text/javascript“> var flashvars = {}; swfobject.embedSWF(“myContent.swf“, “myContent“, “300“, “120“, “9.0.0“,“expressInstall.swf“, flashvars, params, attributes); </script>
id(String,必须的)指定将会被Flash内容替换的HTML元素(包含你的替换内容)的id。
width(String,必须的)指定SWF的宽。
height(String,必须的)指定SWF的高。
version(String,必须的)指定你发布的SWF对应的Flash Player版本(格式为:major.minor.release)。
expressInstallSwfurl(String,可选的)指定express install SWF的URL并激活Adobe express install [ http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75 ]。
flashvars(String,可选的)用name:value对指定你的flashvars。
params(String,可选的)用name:value对指定你的嵌套object元素的params。
attributes(String,可选的)用name:value对指定object的属性。
例如:
swfobject.embedSWF("myflash.swf", "myflash", "300", "120", "9.0.0");
swfobject.embedSWF("myflash.swf", "myflash", "300", "120", "9.0.0", null, null, {wmode: ‘transparent’});
</script>
<div id="myflash">这里是当flash不能正常显示时显示的内容</div>
你可以为你的object元素添加下面这些常用的可选属性(attributes)[ http://www.w3schools.com/tags/tag_object.asp ]:
name
styleclass(不使用class,因为class也是ECMA4的保留关键字)
align
你可以使用下面这些专用于Flash的可选param元素[ http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_12701 ]:
loop
menu
quality
scale
salign
wmode
bgcolor
base
swliveconnect
flahvars
devicefont [ http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_13331 ]
allowscriptaccess [ http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_16494 ]
seamlesstabbing [ http://www.adobe.com/support/documentation/en/flashplayer/7/releasenotes.html ]
allowfullscreen [ http://www.adobe.com/devnet/flashplayer/articles/full_screen_mode.html ]
allownetworking [ http://livedocs.adobe.com/flash/9.0/main/00001079.html ]
怎样用JavaScript对象来定义你的flashvars、params和attributes?
你最好用对象的字面量(Object literal notation)来定义JavaScrpt对象,例如这样:
var params = {};
var attributes = {};
你可以在定义对象的时候添加你的name:value对(注意:请确保不要再对象中的最后一个name:value对后面加上逗号):
<script type=“text/javascript“> var flashvars = { swfobject.embedSWF(“myContent.swf“, “myContent“, “300“, “120“, “9.0.0“,“expressInstall.swf“, flashvars, params, attributes); </script> <script type=“text/javascript“> var flashvars = {}; var params = {}; var attributes = {}; swfobject.embedSWF(“myContent.swf“, “myContent“, “300“, “120“, “9.0.0“,“expressInstall.swf“, flashvars, params, attributes); </script> |
上面的代码也可以这样写(为那些喜欢俏皮话的顽固脚本程序员准备的不易读的简写版本(the less readable shorthand version for the die-hard scripter who love one-liners)):
<script type=“text/javascript“> swfobject.embedSWF(“myContent.swf“, “myContent“, “300“, “120“, “9.0.0“,“expressInstall.swf“, {name1:“hello“,name2:“world“,name3:“foobar“}, {menu:“false“}, {id:“myDynamicContent“,name:“myDynamicContent“}); </script> |
如果你不想使用一个参数,你可以将它定义为false或者一个空对象:
<script type=“text/javascript“> var flashvars = false; swfobject.embedSWF(“myContent.swf“, “myContent“, “300“, “120“, “9.0.0“,“expressInstall.swf“, flashvars, params, attributes); </script> |
flashvars对象是一个为了增加易用性而设计的作为快捷方式的参数,所以你可以先忽略它,然后在params对象中指定你的 flashvars:
<script type=“text/javascript“> var flashvars = false; swfobject.embedSWF(“myContent.swf“, “myContent“, “300“, “120“, “9.0.0“,“expressInstall.swf“, flashvars, params, attributes); </script> |
提示:使用SWFObject 2.0 HTML和JavaScript代码生成器(SWFObject 2.0 HTML and JavaScript generator)来帮助你创建代码:[ http://code.google.com/p/swfobject/wiki/SWFObject_2_0_generator ]。
发表评论
-
用SWFObject的动态方法来嵌入Flash内容
2012-02-21 08:20 1271转:http://gray.topdrupal.com/SWF ... -
Flex实时仪表盘下载
2011-11-24 14:20 937贴图 下载: 源码: -
Flex 实现实时曲线图
2011-11-24 14:06 2498转自网络 Flex3 代码 <?xml versio ... -
Flex双击事件无效 解决方法
2011-11-10 18:42 948this.addEventListener(fla ... -
Flex中国际化环境的使用
2011-10-27 19:34 926步骤1:国际化插件 jp.gr.java_conf.ussiy ... -
Flex右键菜单
2011-06-09 19:59 1464<?xml version=" ... -
flex整合java
2011-06-01 16:02 1008转自:http://blog.163.com/ts ... -
转:Flex+blazeds实现与mySQL数据库的连接
2011-06-01 15:17 1471转自:http://xaajie.iteye.com/blog ... -
AS3
2010-07-08 19:52 763学习中.... -
flex项目和组件等
2010-05-18 00:51 1222Adobe APIs 主要包含corelib, mapp ... -
动态监控CPU(含代码) Flash
2009-10-10 12:46 1002http://www.iteye.com/topic/3971 ... -
介绍一个轻量级java的swf处理库
2009-08-21 17:16 1691http://dennis-zane.iteye.com/bl ...
相关推荐
flex与ajax交互、flex与javascript交互
flex与javascript交互利用externalinterface.callback函数进行。
Flex与JavaScript交互实例,已测试过
flex和javascript交互.在Flex中可以用ExternalInterface来调用Flex的方法
Flex 与javascript交互、C#读写Cookie代码
自己总结的javascript与flex的交互还算详细
NULL 博文链接:https://fengzheng0603.iteye.com/blog/1513718
Flex3与javascript相互交互验证,可以供开始学习的人做个入门学习
actionscript与javascript交互
flex 和 javascript 交互 测通 flex 和 javascript 测通
Flex 和JavaScript 交互,并且可以传递参数。
与浏览器的通信能够让 你建立一个可以超越Flex 应用本身的应用程序。你可以连接到已有的地址,通过JavaScript 和其他应用程序通信,并且可以和浏览器的历史记录交互,作为开始。ExternalInterface 类 让你能够调用...
ASP中调用Flex,actionscript与javascript交互,将flex放置在特定的位置。
删除swf这里需要提醒下,因为embedSWF是替换标签,而不是填充。
如果一切正常,那么点击"与flash交互"的Ext按钮;如果一切正常,那么可以在Flash对象中看到“这是一个测试值!!!”;然后在对象中的“发送消息到JavaScript”按钮上面的文本域输入“到JavaScript中去”,然后点击...
@ twilio-labs / plugin-flex Twilio CLI插件可与进行交互该插件为添加了功能,以便在本地开发,构建和部署; 它使用 。要求安装Twilio CLI 通过npm或yarn : $ npm install -g twilio-cli$ yarn global add twilio-...
flex与JS的交互,简单的DEMO。用美图秀秀的上传和美化作为案例。功能演示详见新浪微博。
接着剖析了Flex与Java的通信机制,以及Flex企业应用的客户端架构和服务器端架构;再接着详细讲解了BlazeDS框架的使用方法和工作原理,并通过迭代的方式完整地演示一个真实的Flex企业级应用的开发全过程,实战性极强...
动机我注意到很多学生对如何使用flex和grid CSS属性存有持续的误解,并因此想做一个交互式工具供他们使用,以弄清楚如何在自己的工作中正确应用这些属性,因此我完成了这个项目。技术该项目是使用React,Redux和...
9:添加與JS交互代碼(Copy 網上的),這個函數必須要在IE7以上才能調用。 #region CallJavaScript 成员 private void CallJavaScript(string code) { Type typeIOleObject = this.GetType().GetInterface(...