- 浏览: 68609 次
- 性别:
- 来自: 北京
最新评论
-
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 1258基于CentOS5.5 的高可用性集群的实现ppt.有兴趣的可 ... -
flex ant
2010-10-25 15:47 1155最近再搞测试,于是把自己用到的和大家分享下,写的不好,见谅 ... -
A× 寻路
2010-10-15 14:46 615别人写的,我花银子下载的。放到这你们免费下载。带原代码。 ... -
Apache Ant安装与配置
2010-10-15 13:30 50681,下载Apache ant u ... -
Flex的安全登录系统的设计方案
2010-10-13 13:47 1955对于 Web 应用程 ... -
flash flex actionscript as 特效 游戏 源码 培训资料 资源收集
2010-10-12 18:27 1835http://sourceforge.net /projec ... -
100个优秀的国外设计开发网站,涵盖了Web设计,平面设计,Flash和Flex,设计资源等网站
2010-10-12 18:24 2473常用设计网站 Spunk U ... -
Flex开发全球优秀资源汇集
2010-10-12 18:15 1390FLEX 程序设计基础 【基础】Adobe Flex编码指 ... -
Flex资源
2010-10-12 18:03 899http://www.infoq.com/cn/zones/f ... -
(转)Flex开源项目
2010-10-12 17:58 9621. Flexbox http://flexbox.mri ... -
开源Flash 3D引擎Papervision3d
2010-10-11 14:15 1076地址:http://unbe.cn/tag/pv3d/page ... -
p2p 语音视频
2010-10-09 15:36 1457公司下载的,懒的回去再下载。Adobe Labs的一个p2p语 ... -
Flex 元数据及用法
2010-09-08 15:48 975Flex引入了元数据标签的概念,它告诉编译器如何编译 ... -
Flex中本地图片上传前的预览
2010-08-25 17:14 1437<?xml version="1.0" ... -
flex生成pdf文件
2010-08-25 17:11 2161上午写了篇flex生成Excel文件的文章,项目需要还 ... -
flex datagrid 数据保存到excel以及从excel读取数据
2010-08-25 13:15 4402最近在做这个,要下载一个as3xls.swc文件,这个 ... -
AIR资源
2010-06-28 11:07 1410什么是AIR以及如何入门 Air是个跨操作系统的运行环境。可 ... -
Flex特效
2009-06-24 10:40 7306这里面有许多特效很酷,希望对大家有帮助。 1.旋转 ... -
flex3中实现拖放
2009-03-24 11:40 1318在flex3中实现拖放有两 ... -
关于在DataGrid中使用CheckBox全选
2009-03-24 11:31 2162该文中提供在datagrid中实现全部所有列的chec ...
相关推荐
与浏览器的通信能够让 你建立一个可以超越Flex 应用本身的应用程序。你可以连接到已有的地址,通过JavaScript 和其他应用程序通信,并且可以和浏览器的历史记录交互,作为开始。ExternalInterface 类 让你能够调用...
Flex与后台交互的方法 是用于构建和维护在所有主要浏览器、桌面和操作系统一致地部署的极具表现力的 Web 应用程序的高效率的开放源码
Flex 是一个高效、免费的开源框架,可用于构建具有表现力的 Web 应用程序,这些应用程序利用 Adobe Flash Player和 Adobe AIR, 运行时跨浏览器、桌面和操作系统实现一致的部署。虽然只能使用 Flex 框架构建 Flex ...
这是几个常见的问题: 1.安全域问题,3.粘包问题 4.中文问题。
它使企业能够创建个性化的丰富多媒体应用程序,极大地提高用户的体验,彻底革新人与 Web 的交互关系。 1.增强用户体验 2.完善的开发环境 3.通用的配置环境 4.企业级的特征 5.消除页面加载 6.标准的架构 7.与...
Flex的一些学习习资料,有点...虽然只能使用 Flex 框架构建 Flex 应用程序,但Adobe Flash Builder™(之前称为 Adobe Flex Builder™)软件可以通过智能编码、交互式遍历调试以及可视设计用户界面布局等功能加快开发。
虽然只能使用 Flex 框架构建 Flex应用程序,但Adobe Flash Builder™(之前称为 Adobe Flex Builder™)软件可以通过智能编码、交互式遍历调试以及可视设计用户界面布局等功能加快开发。 使用 Flex 创建的 RIA 可...
Flex 是一个高效、免费的开源框架,可用于构建具有表现力的 Web应用程序,这些应用程序利用Adobe Flash Player和Adobe AIR, 运行时跨浏览器、桌面和操作系统实现一致的部署。虽然只能使用 Flex 框架构建 Flex应用...
手机应用程序中用户与文本的交互 在手机应用程序中支持屏幕键盘 在手机应用程序中嵌入字体 在手机控件中使用 HTML 文本 第 6 章: 外观设计 手机外观设计的基础知识 为手机应用程序创建外观 应用自定义手机外观 ........
Flex 是一个高效、免费的开源框架,可用于构建具有表现力的 Web应用程序,这些应用程序利用Adobe Flash Player和Adobe AIR, 可以实现跨浏览器、桌面和操作系统。虽然只能使用 Flex 框架构建 Flex应用程序,但Adobe ...
flexdashboard:用于R的简单交互式仪表板 使用可以将一组相关的数据可视化发布为仪表板。 支持多种组件,包括 ; 基本,晶格和网格图形; 表格数据量规和值箱; 和文字注释。 灵活且易于指定基于行和列的。 可以智能...
手机应用程序中用户与文本的交互 在手机应用程序中支持屏幕键盘 在手机应用程序中嵌入字体 在手机控件中使用 HTML 文本 第 6 章: 外观设计 手机外观设计的基础知识 为手机应用程序创建外观 应用自定义手机外观 ...
第二十章与浏览器通信(628) 20.1节连接到外部URL 20.2节使用FlashVars 20.3节在Flex里面调用JavaScript函数方法 20.4节在JavaScript中调用ActionScript方法函数 20.5节经由BrowserManager改变HTML页面标题 20.6节...
npm test 在交互式监视模式下启动测试运行器。 有关更多信息,请参见关于运行测试的部分。 npm run build 构建生产到应用程序build文件夹。 它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被...
打开在浏览器中查看。 如果进行编辑,页面将重新加载。 您还将在控制台中看到任何棉绒错误。 yarn test 在交互式监视模式下启动测试运行程序。 有关更多信息,请参见关于的部分。 yarn build 构建生产到应用程序...
用浏览器打开以查看结果。 您可以通过修改pages/index.js来开始编辑页面。 页面在您编辑文件时自动更新。 可以在上访问。 可以在pages/api/hello.js编辑此端点。 pages/api目录映射到/api/* 。 此目录中的文件被...
Blazor与Flex和silverlight有点像,Flex和silverlight有一些大厂反对,不支持flex和silverlight Blazor使用Web Assembly标准,Web Assembly是一种业界标准,所有浏览器都支持它,类似于Java字节码,各种语言都可以...
打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。yarn test 在交互式监视模式下启动测试运行器。 有关更多信息,请参见关于的部分。yarn build 构建生产到应用程序...
用浏览器打开以查看结果。 您可以通过修改pages/index.js来开始编辑页面。 页面在您编辑文件时自动更新。 可以在上访问。 可以在pages/api/hello.js编辑此端点。 pages/api目录映射到/api/* 。 此目录中的文件被...
作用:增强用户的交互体验 同步操作 :在jsp/servlet中 发送了一个同步的request 这时用户必须等待响应. 特点:返回一个整张页面 异步操作 : 发送了一个异步的request 这时用户不用等待 ,可以进行后续...