- 浏览: 69749 次
- 性别:
- 来自: 北京
最新评论
-
yuqingxue:
这个怎么用啊?光下下来了
flex生成pdf文件 -
yuqingxue:
怎么解决乱码问题呢?
flex datagrid 数据保存到excel以及从excel读取数据 -
kimmking:
xzxiaozhang 写道哥,这没整好吧,从excel到,d ...
flex datagrid 数据保存到excel以及从excel读取数据 -
xzxiaozhang:
哥,这没整好吧,从excel到,dataGrid上,搞不了。。 ...
flex datagrid 数据保存到excel以及从excel读取数据 -
wangshengyuan:
不要用我的头像,快点撤下来,猪
Flex的安全登录系统的设计方案
在用flex做Web应用时为了扩展应用程序功能,势必会更多的同浏览器进行交互,这样就会用到下面介绍的知识
1、在Flex中实现URL 跳转(使用flash.net.navigateToURL()方法如:)
view plaincopy to clipboardprint?
/*
* param1: 要跳转的URL
* param2: 跳转方式 _blank /_self
*/
navigateToURL(new URLRequest("http://blog.csdn.net/xingjunli"),"_blank");
/*
* param1: 要跳转的URL
* param2: 跳转方式 _blank /_self
*/
navigateToURL(new URLRequest("http://blog.csdn.net/xingjunli"),"_blank");
2、使用FlashVars传替换参数(使用Application.application.parameters属性)
页面嵌入SWF文件代码(我们可以通过JS动态来设置FlashVars信息已达到数据交互的目的)
view plaincopy to clipboardprint?
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="mySwf">
<param name="movie" value="main.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="FlashVars" value="UserName=Andy_liu&Age=18&Address=HongKong" />
</object>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="mySwf">
<param name="movie" value="main.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="FlashVars" value="UserName=Andy_liu&Age=18&Address=HongKong" />
</object>
Flex中获取参数代码:
view plaincopy to clipboardprint?
private function onFlashVars(e:MouseEvent):void //获取页面参数
{
var parameters:Object = Application.application.parameters;
labURL.text = Application.application.url.toString(); // http://localhost:8889/main.swf
var param1:String = parameters.UserName; // Andy_liu
var param2:int = parseInt(parameters.Age); // 18
var param3:String = parameters.Address; // HongKong
/*
txtParam1.text = param1;
txtParam2.text = String(param2);
txtParam3.text = param3;
*/
}
private function onFlashVars(e:MouseEvent):void //获取页面参数
{
var parameters:Object = Application.application.parameters;
labURL.text = Application.application.url.toString(); // http://localhost:8889/main.swf
var param1:String = parameters.UserName; // Andy_liu
var param2:int = parseInt(parameters.Age); // 18
var param3:String = parameters.Address; // HongKong
/*
txtParam1.text = param1;
txtParam2.text = String(param2);
txtParam3.text = param3;
*/
}
3、在Flex中调用JavaScript函数
先在页面中完成js function(注在Flex中只能调用当前页面引入的JS函数)
view plaincopy to clipboardprint?
function ShowUserInfo(name,age,address)
{
alert("Name:" + name+"\n" + "Age:" + age + "\n" +"Address"+address);
return "Call Successful!"
}
function ShowUserInfo(name,age,address)
{
alert("Name:" + name+"\n" + "Age:" + age + "\n" +"Address"+address);
return "Call Successful!"
}
Flex中调用方法并获取JS function返回值( 使用ExternalInterface.call()方法):
view plaincopy to clipboardprint?
private function onCallJS(e:MouseEvent):void
{
/*
* param1:当前页JS function 方法名
* param...传递的参数0-N个
*/
var resultValue:String = ExternalInterface.call("ShowUserInfo",txtParam1.text,txtParam2.text,txtParam3.text);
//resultValue = Call Successful!
}
private function onCallJS(e:MouseEvent):void
{
/*
* param1:当前页JS function 方法名
* param...传递的参数0-N个
*/
var resultValue:String = ExternalInterface.call("ShowUserInfo",txtParam1.text,txtParam2.text,txtParam3.text);
//resultValue = Call Successful!
}
4、在JavaScript中调用ActionScript函数
页面中调用的JS 函数
view plaincopy to clipboardprint?
function CallFlexMethod()
{
var swf="mySwf";
var container;
//alert(navigator.appName);
if(navigator.appName.indexOf("Microsoft")>=0)
{
container = document;
}
else
{
container = window;
}
container[swf].flexFunction1(); //无参方法
container[swf].flexFunction2("myHtmlRequest!");//参数传递方法
alert(container[swf].flexFunction3()); //含返回值方法
}
function CallFlexMethod()
{
var swf="mySwf";
var container;
//alert(navigator.appName);
if(navigator.appName.indexOf("Microsoft")>=0)
{
container = document;
}
else
{
container = window;
}
container[swf].flexFunction1(); //无参方法
container[swf].flexFunction2("myHtmlRequest!");//参数传递方法
alert(container[swf].flexFunction3()); //含返回值方法
}
Flex中注册和调用执行的方法:
view plaincopy to clipboardprint?
//重要必须在Flex中执行如下注册 才能在JS中调用
private function registerCallBacks():void
{
ExternalInterface.addCallback("flexFunction1",jsCallBack1);
ExternalInterface.addCallback("flexFunction2",jsCallBack2);
ExternalInterface.addCallback("flexFunction3",jsCallBack3);
}
private function jsCallBack1():void
{
Alert.show("Call First Flex Method!");
}
private function jsCallBack2(params:*):void
{
Alert.show("Call Method2:" + String(params));
}
private function jsCallBack3():String
{
return Math.random().toString();
}
//重要必须在Flex中执行如下注册 才能在JS中调用
private function registerCallBacks():void
{
ExternalInterface.addCallback("flexFunction1",jsCallBack1);
ExternalInterface.addCallback("flexFunction2",jsCallBack2);
ExternalInterface.addCallback("flexFunction3",jsCallBack3);
}
private function jsCallBack1():void
{
Alert.show("Call First Flex Method!");
}
private function jsCallBack2(params:*):void
{
Alert.show("Call Method2:" + String(params));
}
private function jsCallBack3():String
{
return Math.random().toString();
}
5、BrowserManager管理组件应用
BrowserManager 是一个 Singleton 管理器,用于充当浏览器和应用程序之间的代理。使用它可以访问浏览器地址栏中的 URL,这与访问 JavaScript 中的 document.location 属性类似。当 url 属性发生更改时调度这些事件。然后侦听器可以响应、更改该 URL 或阻止其它对象获取此事件。
获得bm实例:
view plaincopy to clipboardprint?
private var bm:IBrowserManager = BrowserManager.getInstance();
private var bm:IBrowserManager = BrowserManager.getInstance();
a、获取URL传递的参数:
view plaincopy to clipboardprint?
private function getBrowserValue():void
{
//URL = "http://localhost/browser/main.html#name=peter;age=25;address=shenzhen china"
var o:Object = URLUtil.stringToObject(bm.fragment);
txtURLName.text = o.name; // peter
txtURLAge.text = o.age; // 25
txtURLAddress.text = o.address; // shenzhen china
}
private function getBrowserValue():void
{
//URL = "http://localhost/browser/main.html#name=peter;age=25;address=shenzhen china"
var o:Object = URLUtil.stringToObject(bm.fragment);
txtURLName.text = o.name; // peter
txtURLAge.text = o.age; // 25
txtURLAddress.text = o.address; // shenzhen china
}
b、获取浏览器信息(请求URL:“http://localhost:8889/main.html#name=peter;age=25;address=shenzhen%20china”)
view plaincopy to clipboardprint?
private function onBrowserManager(e:MouseEvent):void
{
txtBMOutPut.text += "Full URL: \n" + bm.url + "\n\n";
txtBMOutPut.text += "Base URL: \n" + bm.base + "\n\n";
txtBMOutPut.text += "URL Fragment URL: \n" + bm.fragment + "\n-----------\n";
var o:Object = URLUtil.stringToObject(bm.fragment);
txtBMOutPut.text += "Object: \n" + ObjectUtil.toString(o) + "\n\n";
txtBMOutPut.text += "Name: \n" + o.name + "\n\n";
txtBMOutPut.text += "Age: \n" + o.age + "\n\n";
txtBMOutPut.text += "Address: \n" + o.address + "\n-----------\n";
txtBMOutPut.text += "URL Port: \n" + URLUtil.getPort(bm.url) + "\n\n";
txtBMOutPut.text += "URL Protocol: \n" + URLUtil.getProtocol(bm.url) + "\n\n";
txtBMOutPut.text += "URL Server: \n" + URLUtil.getServerName(bm.url) + "\n\n";
txtBMOutPut.text += "URL Server with Port: \n" + URLUtil.getServerNameWithPort(bm.url) + "\n-----------\n";
/* 执行结果:
Full URL:
http://localhost:8889/main.html#name=peter;age=25;address=shenzhen%20china
Base URL:
http://localhost:8889/main.html
URL Fragment URL:
name=peter;age=25;address=shenzhen%20china
-----------
Object:
(Object)#0
address = "shenzhen china"
age = 25
name = "peter"
Name:
peter
Age:
25
Address:
shenzhen china
-----------
URL Port:
8889
URL Protocol:
http
URL Server:
localhost
URL Server with Port:
localhost:8889
-----------
*/
}
private function onBrowserManager(e:MouseEvent):void
{
txtBMOutPut.text += "Full URL: \n" + bm.url + "\n\n";
txtBMOutPut.text += "Base URL: \n" + bm.base + "\n\n";
txtBMOutPut.text += "URL Fragment URL: \n" + bm.fragment + "\n-----------\n";
var o:Object = URLUtil.stringToObject(bm.fragment);
txtBMOutPut.text += "Object: \n" + ObjectUtil.toString(o) + "\n\n";
txtBMOutPut.text += "Name: \n" + o.name + "\n\n";
txtBMOutPut.text += "Age: \n" + o.age + "\n\n";
txtBMOutPut.text += "Address: \n" + o.address + "\n-----------\n";
txtBMOutPut.text += "URL Port: \n" + URLUtil.getPort(bm.url) + "\n\n";
txtBMOutPut.text += "URL Protocol: \n" + URLUtil.getProtocol(bm.url) + "\n\n";
txtBMOutPut.text += "URL Server: \n" + URLUtil.getServerName(bm.url) + "\n\n";
txtBMOutPut.text += "URL Server with Port: \n" + URLUtil.getServerNameWithPort(bm.url) + "\n-----------\n";
/* 执行结果:
Full URL:
http://localhost:8889/main.html#name=peter;age=25;address=shenzhen%20china
Base URL:
http://localhost:8889/main.html
URL Fragment URL:
name=peter;age=25;address=shenzhen%20china
-----------
Object:
(Object)#0
address = "shenzhen china"
age = 25
name = "peter"
Name:
peter
Age:
25
Address:
shenzhen china
-----------
URL Port:
8889
URL Protocol:
http
URL Server:
localhost
URL Server with Port:
localhost:8889
-----------
*/
}
c、BrowserManager还包含其它一些浏览器的扩展方法如:bm.setTitle("新标题:正在培训!")修改页面标题等...参考http://livedocs.adobe.com/flex/3/html/help.html?content=deep_linking_3.html
6、在Flex中通过实现mx.managers.IHistoryManagerClinet接口来实现自定义历史记录管理器
自定义textInput
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<mx:TextInput xmlns:mx="http://www.adobe.com/2006/mxml" text="Change Me!" implements="mx.managers.IHistoryManagerClient"
creationComplete="mx.managers.HistoryManager.register(this);" change="textChanged(event)">
<mx:Script>
<!--[CDATA[
import mx.managers.HistoryManager;
private function textChanged(e:Event):void
{
HistoryManager.save();
}
public function saveState():Object
{
return {text:text};
}
public function loadState(state:Object):void
{
var newState:String = state?state.text:"";
if(newState != text)
{
text = unescape(newState);
}
}
]]-->
</mx:Script>
</mx:TextInput>
<?xml version="1.0" encoding="utf-8"?>
<mx:TextInput xmlns:mx="http://www.adobe.com/2006/mxml" text="Change Me!" implements="mx.managers.IHistoryManagerClient"
creationComplete="mx.managers.HistoryManager.register(this);" change="textChanged(event)">
<mx:Script>
<!--[CDATA[
import mx.managers.HistoryManager;
private function textChanged(e:Event):void
{
HistoryManager.save();
}
public function saveState():Object
{
return {text:text};
}
public function loadState(state:Object):void
{
var newState:String = state?state.text:"";
if(newState != text)
{
text = unescape(newState);
}
}
]]-->
</mx:Script>
</mx:TextInput>
当我们在使用上面自定义的TextInput时会发现在浏览器URL中会动态创建修入如这样的一些信息“#app=a4e4&8211-text=asdfasdfasdfsd%20”故FLEX通过浏览器URL记录SWF文件中组件的变化已实现保存历史记录数据已实现历史记录管理!
发表评论
-
基于CentOS5.5 的高可用性集群的实现
2010-10-26 16:25 1298基于CentOS5.5 的高可用性集群的实现ppt.有兴趣的可 ... -
flex ant
2010-10-25 15:47 1194最近再搞测试,于是把自己用到的和大家分享下,写的不好,见谅 ... -
A× 寻路
2010-10-15 14:46 657别人写的,我花银子下载的。放到这你们免费下载。带原代码。 ... -
Apache Ant安装与配置
2010-10-15 13:30 51051,下载Apache ant u ... -
Flex的安全登录系统的设计方案
2010-10-13 13:47 1996对于 Web 应用程 ... -
flash flex actionscript as 特效 游戏 源码 培训资料 资源收集
2010-10-12 18:27 1869http://sourceforge.net /projec ... -
100个优秀的国外设计开发网站,涵盖了Web设计,平面设计,Flash和Flex,设计资源等网站
2010-10-12 18:24 2505常用设计网站 Spunk U ... -
Flex开发全球优秀资源汇集
2010-10-12 18:15 1449FLEX 程序设计基础 【基础】Adobe Flex编码指 ... -
Flex资源
2010-10-12 18:03 938http://www.infoq.com/cn/zones/f ... -
(转)Flex开源项目
2010-10-12 17:58 10001. Flexbox http://flexbox.mri ... -
开源Flash 3D引擎Papervision3d
2010-10-11 14:15 1101地址:http://unbe.cn/tag/pv3d/page ... -
p2p 语音视频
2010-10-09 15:36 1480公司下载的,懒的回去再下载。Adobe Labs的一个p2p语 ... -
Flex 元数据及用法
2010-09-08 15:48 1005Flex引入了元数据标签的概念,它告诉编译器如何编译 ... -
Flex中本地图片上传前的预览
2010-08-25 17:14 1472<?xml version="1.0" ... -
flex生成pdf文件
2010-08-25 17:11 2254上午写了篇flex生成Excel文件的文章,项目需要还 ... -
flex datagrid 数据保存到excel以及从excel读取数据
2010-08-25 13:15 4479最近在做这个,要下载一个as3xls.swc文件,这个 ... -
AIR资源
2010-06-28 11:07 1455什么是AIR以及如何入门 Air是个跨操作系统的运行环境。可 ... -
Flex特效
2009-06-24 10:40 7344这里面有许多特效很酷,希望对大家有帮助。 1.旋转 ... -
flex3中实现拖放
2009-03-24 11:40 1355在flex3中实现拖放有两 ... -
关于在DataGrid中使用CheckBox全选
2009-03-24 11:31 2197该文中提供在datagrid中实现全部所有列的chec ...
相关推荐
5. **实际应用**:Flex与JavaScript的交互广泛应用于网页中的数据交换、用户交互、页面导航等场景。例如,Flex可以用于复杂的计算或图形渲染,而JavaScript则负责处理DOM操作和页面逻辑。 在提供的示例"flexWithJS...
### Flex与JavaScript交互详解 #### 一、引言 随着Web技术的发展,不同语言之间的通信变得尤为重要。在Flex与HTML的结合中,Flex通常作为富客户端应用,而JavaScript则负责处理网页逻辑。为了实现二者之间的无缝...
这种交互性极大地扩展了富互联网应用(RIA)的功能,使得开发者能够利用Flex的强大图形和动画能力,同时利用JavaScript与网页环境的紧密集成。 ActionScript是Flex的核心编程语言,它是基于ECMAScript的一个方言,...
与浏览器的通信能够让 你建立一个可以超越Flex 应用本身的应用程序。你可以连接到已有的地址,通过JavaScript 和其他应用程序通信,并且可以和浏览器的历史记录交互,作为开始。ExternalInterface 类 让你能够调用...
### Flex与Ajax交互、Flex与JavaScript交互 #### 一、引言 随着Web技术的发展,Flex作为一种基于Adobe Flash平台的应用开发框架,在企业级应用中曾经非常流行。它提供了丰富的用户界面构建工具,并能够与服务器端...
标题“flex与js交互 关于ExternalInterface使用的小例子”指出了本文将探讨如何使用Flex的ExternalInterface类与JavaScript进行通信。ExternalInterface是Flex提供的一个API,允许ActionScript(Flex的主要编程语言...
3. **ExternalInterface**: `ExternalInterface` 类允许Flash内容与宿主环境(如浏览器)进行交互。在这个例子中,它被用来调用JavaScript的 `window.location.search.substring` 方法来获取URL的查询字符串,从而...
本文将深入探讨Flex与Flash之间的交互,以及如何利用它们来构建动态、交互性强的Web应用程序。 Flex是由Adobe开发的一种开源框架,主要用于构建基于Flash Player或Adobe AIR的桌面和Web应用程序。它提供了MXML和...
Flex与后台交互的方法是其核心功能之一,确保前端用户界面与后端数据服务之间的无缝通信。以下将详细介绍Flex与后台交互的常见方法和相关知识点。 1. **AMF (Action Message Format)** AMF是Flex与服务器之间进行...
- 浏览器兼容性:不是所有浏览器都支持Applet,这可能会限制Flex与Applet交互的应用范围。此外,不同浏览器对`LiveConnect`的支持程度也不同,需要测试以确保兼容性。 5. **示例代码**: - Flex代码片段可能包含...
在Flex应用中监听浏览器关闭事件主要依赖于JavaScript与Flash/Flex之间的交互。当用户尝试关闭浏览器窗口时,`window.onbeforeunload`事件会被触发。我们可以通过在Flex应用中调用JavaScript来监听这个事件,并在...
Flex与JavaScript交互是一种常见的技术,它允许在Adobe Flex(基于ActionScript 3的富互联网应用程序框架)和网页中的JavaScript之间进行通信。这种交互性对于构建混合型应用,特别是在需要利用浏览器内核特性的Web...
在本压缩包"Flex实例 Flex基础 Web+Flex+LCDS Flex跟Java交互"中,我们可以深入探讨Flex的基础知识、Web与Flex的集成、LCDS的使用以及Flex如何与Java进行数据交互。 1. **Flex基础**:Flex提供了一整套组件库,包括...
这些应用程序通常在Flash Player中运行,这是一个跨平台的浏览器插件,能够展示丰富的媒体和交互内容。 三、Flex Builder与IDE Flex Builder是基于Eclipse的集成开发环境(IDE),专为Flex和ActionScript开发设计。...
总结来说,Flex与JavaScript的交互提供了双向通信的能力,使得Flash组件可以利用JavaScript与Web页面深度集成,同时也能够调用Flash应用的高级功能。这种交互方式在创建动态、交互性强的Web应用时非常有用。不过,...
1. **跨域策略文件**:由于Flash Player的安全限制,Flex应用在与JavaScript交互前需要加载一个跨域策略文件,允许它与不同源的JavaScript进行通信。这个文件通常命名为crossdomain.xml,放置在服务器的根目录下。 ...
总结来说,Flex与JavaScript的交互使得RIA能够充分利用浏览器环境,提供更丰富的用户交互,而C#的Cookie操作则在服务器端管理用户状态,确保Web应用的健壮性和安全性。理解并熟练运用这些技术,对于开发高性能、用户...
### Flex与JavaScript交互详解 #### 一、在JavaScript中调用Flex方法 在Flex与JavaScript进行交互时,可以通过`ExternalInterface`实现从JavaScript调用Flex中的方法。这主要是通过向Flex应用注册特定的公共方法来...