- 浏览: 1024214 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (445)
- Java (22)
- J2EE (18)
- Flex (102)
- Flex-blazeds (1)
- Flex-FABridge (2)
- Flex4 (3)
- CheckStyle (2)
- PowerDesigner (0)
- POI (2)
- Java2Word (2)
- 杂项 (15)
- 日记 (3)
- 数据库-oracle (41)
- 数据库-SQLServer (7)
- 中间件 (1)
- 英语 (8)
- C# (43)
- ASP.net (72)
- ASP.net MVC (28)
- 微软-Entity Framework (19)
- JavaScript (22)
- JQuery (31)
- EasyUI (3)
- VS2010 (4)
- CVS (1)
- Tomcat (3)
- Linux (1)
- 遗留问题 (1)
- iphone (1)
- MAC (0)
- 系统 (2)
- Web Service (4)
- Cache Manager (1)
- PMP (1)
- WCF (10)
- BootstrapJs (1)
- Web API (6)
- Go语言 (0)
- 网络协议 (2)
- Redis (10)
- RabbitMQ (10)
- Git (3)
- Kafka (5)
- ELK (5)
- Nginx (3)
- 测试 (2)
最新评论
-
ygm0720:
Table行拖拽自己实现 -
程乐平:
Flex4开发视频教程(27集)下载http://bbs.it ...
Flex4教程 -
liuweihug:
Jquery+asp.net 后台数据传到前台js进行解析的办 ...
AJAX $.toJSON的用法或把数组转换成json类型 -
weilikk:
谢谢谢谢!!
javascript IE下不能用 trim函数解决方法 -
gxz1989611:
vigiles 写道请问楼主:[Fault] exceptio ...
blazeds推送技术至Flex
Flex应用开发过程中如需要灵活的在不同组件(如A与B,父与子)之间响应事件,传递参数等功能时就会使用自定义事件(Event)机制,下面通过一个事例分七步,通过自定义Event和EventDispatcher两种机制实现事件交互和参数传递;
事例描述: 有一个父亲“parentApp.mxml”有两个儿子“comBrotherA.mxml”和"comBrotherB.mxml",新年
降至,两个儿子为表孝心分别给他们老爸存入(事件)一笔过节费(事件参数),并通知老爸我存钱进去了,老爸在收到两个儿子的钱后汇总后同时告诉(事件)两
个儿子钱我已收到总数(事件参数)是多少...
1、第一步:引入自定义注册事件参数传递扩展类(来自网络)
view plaincopy to clipboardprint?
package myeventhelper
{
//自定义注册事件参数传递扩展类
public class EventArgExtend
{
public function EventArgExtend()
{
}
public static function create(f:Function,...arg):Function //动态参数创建
{
var F:Boolean = false;
var _f:Function = function(e:*,..._arg)
{
_arg = arg;
if(!F)
{
F = true;
_arg.unshift(e);
}
f.apply(null,_arg);
};
return _f;
}
public static function toString():String
{
return "Class JEventDelegate";
}
}
}
package myeventhelper
{
//自定义注册事件参数传递扩展类
public class EventArgExtend
{
public function EventArgExtend()
{
}
public static function create(f:Function,...arg):Function //动态参数创建
{
var F:Boolean = false;
var _f:Function = function(e:*,..._arg)
{
_arg = arg;
if(!F)
{
F = true;
_arg.unshift(e);
}
f.apply(null,_arg);
};
return _f;
}
public static function toString():String
{
return "Class JEventDelegate";
}
}
}
2、第二步:自定义事件触发类:
view plaincopy to clipboardprint?
package myeventhelper
{
import flash.events.EventDispatcher;
import mx.core.UIComponent;
//自定义事件触发类
public class MyEventDispatcher extends EventDispatcher
{
private static var _instance:MyEventDispatcher;
public static const EXEC_PARENT_METHOD:String="ExecParentMethod"; //执行Parent方法
public static function getInstance():MyEventDispatcher
{
if(_instance==null){
_instance=new MyEventDispatcher();
}
return _instance;
}
public var Source:UIComponent; //事件源对象
public var Parsms:Object; //主要用于参数传递
}
}
package myeventhelper
{
import flash.events.EventDispatcher;
import mx.core.UIComponent;
//自定义事件触发类
public class MyEventDispatcher extends EventDispatcher
{
private static var _instance:MyEventDispatcher;
public static const EXEC_PARENT_METHOD:String="ExecParentMethod"; //执行Parent方法
public static function getInstance():MyEventDispatcher
{
if(_instance==null){
_instance=new MyEventDispatcher();
}
return _instance;
}
public var Source:UIComponent; //事件源对象
public var Parsms:Object; //主要用于参数传递
}
}
3、第三步:用户自定义事件类
view plaincopy to clipboardprint?
package myeventhelper
{
import mx.events.FlexEvent;
//用户自定义事件类
public class MyExtendEvent extends FlexEvent
{
public static const EXEC_BROTHER_METHOD:String="ExecBrotherMethod";//执行兄弟方法
public var param:Object;
public function MyExtendEvent(o:Object,type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
this.param = o;//也可通过这样的方式传递参数
}
}
}
package myeventhelper
{
import mx.events.FlexEvent;
//用户自定义事件类
public class MyExtendEvent extends FlexEvent
{
public static const EXEC_BROTHER_METHOD:String="ExecBrotherMethod";//执行兄弟方法
public var param:Object;
public function MyExtendEvent(o:Object,type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
this.param = o;//也可通过这样的方式传递参数
}
}
}
4、第四步:完成儿子A“comBrotherA.mxml”:
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml
" width="222" height="170" title="组件A" creationComplete="init()">
<mx:Script>
<!--[CDATA[
import myeventhelper.MyExtendEvent;
import myeventhelper.MyEventDispatcher;
import myeventhelper.EventArgExtend;
private var execParent:MyEventDispatcher; //触发父亲节点事件
function init():void
{
execParent = MyEventDispatcher.getInstance();
}
public function onGetParentTotal(e:MyExtendEvent,...agrs):void
{
//下面两种方法都可以用来传递参数
//this.labTotal.text = String(agrs[0].totalValue);
this.labTotal.text = e.param.toString();
}
public function onParentEvent(event:Event):void
{
execParent.Parsms = txtValue.text;
execParent.Source = this;
execParent.dispatchEvent(new Event(MyEventDispatcher.EXEC_PARENT_METHOD));
}
]]-->
</mx:Script>
<mx:Canvas height="90" width="197">
<mx:TextInput width="92" y="10" x="85" id="txtValue"/>
<mx:Label x="13" y="12" text="存入:"/>
<mx:Label x="87" y="56" width="90" id="labTotal"/>
<mx:Label x="5" y="56" text="ParentTotal:"/>
</mx:Canvas>
<mx:ControlBar>
<mx:Button label="调用父方法" id="btnExecParent" click="onParentEvent(event)"/>
</mx:ControlBar>
</mx:Panel>
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml
" width="222" height="170" title="组件A" creationComplete="init()">
<mx:Script>
<!--[CDATA[
import myeventhelper.MyExtendEvent;
import myeventhelper.MyEventDispatcher;
import myeventhelper.EventArgExtend;
private var execParent:MyEventDispatcher; //触发父亲节点事件
function init():void
{
execParent = MyEventDispatcher.getInstance();
}
public function onGetParentTotal(e:MyExtendEvent,...agrs):void
{
//下面两种方法都可以用来传递参数
//this.labTotal.text = String(agrs[0].totalValue);
this.labTotal.text = e.param.toString();
}
public function onParentEvent(event:Event):void
{
execParent.Parsms = txtValue.text;
execParent.Source = this;
execParent.dispatchEvent(new Event(MyEventDispatcher.EXEC_PARENT_METHOD));
}
]]-->
</mx:Script>
<mx:Canvas height="90" width="197">
<mx:TextInput width="92" y="10" x="85" id="txtValue"/>
<mx:Label x="13" y="12" text="存入:"/>
<mx:Label x="87" y="56" width="90" id="labTotal"/>
<mx:Label x="5" y="56" text="ParentTotal:"/>
</mx:Canvas>
<mx:ControlBar>
<mx:Button label="调用父方法" id="btnExecParent" click="onParentEvent(event)"/>
</mx:ControlBar>
</mx:Panel>
5、第五步:完成儿子B“comBrotherB.mxml”:
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml
" width="222" height="170" title="组件B" creationComplete="init()">
<mx:Script>
<!--[CDATA[
import myeventhelper.MyExtendEvent;
import myeventhelper.MyEventDispatcher;
import myeventhelper.EventArgExtend;
private var execParent:MyEventDispatcher; //触发父亲节点事件
function init():void
{
execParent = MyEventDispatcher.getInstance();
}
public function onGetParentTotal(e:Event,...agrs):void //响应父亲类的触发的事件
{
this.labTotal.text = String(agrs[0].totalValue);
}
public function onParentEvent(event:Event):void //通过自定义事件触发类传递参数
{
execParent.Parsms = txtValue.text;
execParent.Source = this;
execParent.dispatchEvent(new Event(MyEventDispatcher.EXEC_PARENT_METHOD));
}
]]-->
</mx:Script>
<mx:Canvas height="90" width="197">
<mx:TextInput width="92" y="10" x="85" id="txtValue"/>
<mx:Label x="13" y="12" text="存入:"/>
<mx:Label x="87" y="56" width="90" id="labTotal"/>
<mx:Label x="5" y="56" text="ParentTotal:"/>
</mx:Canvas>
<mx:ControlBar>
<mx:Button label="调用父方法" id="btnExecParent" click="onParentEvent(event)"/>
</mx:ControlBar>
</mx:Panel>
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml
" width="222" height="170" title="组件B" creationComplete="init()">
<mx:Script>
<!--[CDATA[
import myeventhelper.MyExtendEvent;
import myeventhelper.MyEventDispatcher;
import myeventhelper.EventArgExtend;
private var execParent:MyEventDispatcher; //触发父亲节点事件
function init():void
{
execParent = MyEventDispatcher.getInstance();
}
public function onGetParentTotal(e:Event,...agrs):void //响应父亲类的触发的事件
{
this.labTotal.text = String(agrs[0].totalValue);
}
public function onParentEvent(event:Event):void //通过自定义事件触发类传递参数
{
execParent.Parsms = txtValue.text;
execParent.Source = this;
execParent.dispatchEvent(new Event(MyEventDispatcher.EXEC_PARENT_METHOD));
}
]]-->
</mx:Script>
<mx:Canvas height="90" width="197">
<mx:TextInput width="92" y="10" x="85" id="txtValue"/>
<mx:Label x="13" y="12" text="存入:"/>
<mx:Label x="87" y="56" width="90" id="labTotal"/>
<mx:Label x="5" y="56" text="ParentTotal:"/>
</mx:Canvas>
<mx:ControlBar>
<mx:Button label="调用父方法" id="btnExecParent" click="onParentEvent(event)"/>
</mx:ControlBar>
</mx:Panel>
6、第六步:完成父亲类"parentApp.mxml":
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml
" layout="absolute" height="323" xmlns:ns1="component.*" creationComplete="init();" width="574">
<mx:Script>
<!--[CDATA[
import myeventhelper.MyExtendEvent;
import myeventhelper.MyEventDispatcher;
import myeventhelper.EventArgExtend;
private var parentDP:MyEventDispatcher;
public var totalValue:Number = 0;
function init():void
{
parentDP = MyEventDispatcher.getInstance();
nodeEvent = new MyExtendEvent(totalValue,MyExtendEvent.EXEC_BROTHER_METHOD);
if(!parentDP.hasEventListener(MyEventDispatcher.EXEC_PARENT_METHOD))
parentDP.addEventListener(MyEventDispatcher.EXEC_PARENT_METHOD,getSonValue);//注册通过自定义事件触发类传递参数
//注册事件时传递参数
addEventListener(MyExtendEvent.EXEC_BROTHER_METHOD,EventArgExtend.create(comA.onGetParentTotal,this));
addEventListener(MyExtendEvent.EXEC_BROTHER_METHOD,EventArgExtend.create(comB.onGetParentTotal,this));
}
function getSonValue(e:Event):void
{
if(parentDP.Source == comA)
{
txtA.text = String(parentDP.Parsms);
}
else
{
txtB.text = String(parentDP.Parsms);
}
}
//将结果返回儿子节点
private var nodeEvent:MyExtendEvent;
function onSumToNode(e:Event):void//触发事件将结果返回儿子节点
{
totalValue = Number(txtA.text) + Number(txtB.text);
txtTotal.text = String(totalValue);
nodeEvent.param = totalValue;
dispatchEvent(nodeEvent);
}
]]-->
</mx:Script>
<mx:Canvas x="0" y="0" width="573" height="323" backgroundColor="#729AAC">
<mx:TextInput x="65" y="219" id="txtA"/>
<mx:TextInput x="65" y="248" id="txtB"/>
<mx:TextInput x="65" y="276" id="txtTotal"/>
<mx:Label x="37" y="222" text="A:"/>
<mx:Label x="37" y="251" text="B:"/>
<mx:Label x="23" y="278" text="Total:"/>
<mx:Button x="244" y="219" label="触发儿子事件" click="onSumToNode(event)"/>
<ns1:comBrotherA x="37" y="10" id="comA" width="247">
</ns1:comBrotherA>
<ns1:comBrotherB x="323" y="10" id="comB">
</ns1:comBrotherB>
</mx:Canvas>
</mx:Application>
7、执行(存入分别“调用父亲方法”,"触发儿子事件")最终结果:
http://blog.csdn.net/xingjunli/article/details/5107483
发表评论
-
Flex 双斜杠替换单斜杠
2012-02-23 16:11 3292在数据库中存入\r 或者 \n,java或者C#取出后,会变 ... -
flex4操作xml文件实例
2011-11-29 16:33 1681本实例共两个文件: 1、主程序:test.mxml & ... -
Flex异步令牌AsyncToken的用法介绍
2011-11-29 16:22 1472什么是AsyncToken?官方文档是这样描述的:&qu ... -
Flex验证码
2010-07-26 11:28 1564Flex验证码 -
Flex DateGrid表头全选
2010-07-26 11:27 1591Flex DateGrid表头全选 -
Flex中字符串ReplaceAll
2010-05-17 16:22 1476用过FLEX中String类型的朋友可能知道,replace这 ... -
xmllist转换成array
2010-04-26 16:24 2347//将xmllist转黄成array。 ... -
Flex 屏蔽IE的快捷键
2010-04-24 15:21 3693如果项目叫Demo,那么他的HTML应该叫做Demo.html ... -
textinput restrict(正则表达式,约束,限定)
2010-04-20 08:57 2034通常要对输入TextInput中的数据进行验证,如:年龄等,如 ... -
不适用PopUpManage弹出
2010-04-06 09:26 1341Test包下test.mxml代码 <?xml ve ... -
Flex4教程
2010-03-30 11:05 17794最近在学习Flex4,并且开始使用FlashBuilder4, ... -
在AS3中删除一个XML节点
2010-03-29 16:49 1502如果我们在AS3中声明了一个XML片段,并且想在运行时删除其中 ... -
如何限制文本输入的类型?
2010-03-29 09:38 1468在制作Flash表单的时候,我们通常需要限定一下用户输入数据的 ... -
监听IE关闭事件
2010-03-26 10:57 1795//mxml下写入private function AppCo ... -
Flex DataGrid取其中的某一个值
2010-03-22 14:56 2629<?xml version="1.0" ... -
Flex ComboBox prompt使用
2010-03-22 14:55 2338<?xml version="1.0" ... -
一个默认不出现滚动条的hack
2010-03-22 14:45 1322在app里加入 private function prein ... -
Flex 编译参数
2010-03-22 14:26 1216下面是一些常见的编译器参数: 1,【verbose-stack ... -
Flex DataGrid中的DataGridColumn实现Tooltip/Datatip
2010-03-19 10:42 3135I had the problem that I wanted ... -
Flex CombBox联动使用XML实现
2010-03-19 10:40 1270<?xml version="1.0" ...
相关推荐
教你7步实现flex自定义Event与参数传递.doc
4. 示例学习:在"flex自定义组件事件DEMO"中,你可以看到如何在自定义组件中创建并派发自定义事件,以及如何在其他地方监听和响应这些事件。通过分析代码,可以了解事件生命周期、事件冒泡和捕获的概念,以及如何在...
在运行过程中,你将能够看到自定义事件的实现和使用情况。 在Flex4中,自定义事件为应用程序提供了更强大的交互和通信能力。通过理解自定义事件的创建、派发和监听,开发者可以构建出更加灵活和可扩展的应用程序。...
在Flex中,自定义组件是通过继承已有的UIComponent或Flex提供的其他基类,然后添加所需的功能和视觉元素来实现的。对于DownloadProgressBar,我们可能需要继承 mx.controls.ProgressBar 类,它是Flex提供的一种用于...
### Flex自定义事件详解 Flex 是一款用于构建和部署跨平台桌面应用与移动应用的开源框架,它基于Adobe Flash Platform。在Flex应用开发过程中,事件处理机制是非常重要的一个环节,而自定义事件则是这一机制中的...
开发者也可以自定义事件类,扩展Event或Flex的其他事件基类,以满足特定需求。 在Flex应用中,事件处理不仅限于UI组件。数据模型和业务逻辑层也可以利用事件来协调工作。例如,当数据服务完成异步数据加载时,可以...
2. **构造函数**:重写构造函数,传递事件类型和是否冒泡等参数。 3. **派发事件**:在需要触发事件的地方,使用`dispatchEvent()`方法发送自定义事件。 4. **监听事件**:在接收方组件中,使用`addEventListener()`...
- 实现页面间的参数传递和状态保持。 #### 14. manager - **Manager 类**: Flex 中用于管理和协调不同部分的类。 - **示例**: 如 LayoutManager 用于控制布局,EventManager 用于处理事件等。 #### 15. Demo8:...
在Flex4中,自定义事件的创建主要是通过扩展Event类或其子类来实现的。下面将深入讲解自定义事件的创建、派发、监听和处理过程。 1. **创建自定义事件**:首先,你需要创建一个新的ActionScript类,这个类将继承自...
拖拽功能在Flex中可以通过使用内置的DragManager类和Event类来实现。DragManager类提供了全局的拖放管理,而事件类如MouseEvent和DragEvent则是处理拖放过程中的各种交互。下面我们将深入探讨如何在Flex中创建一个...
为了实现更丰富的交互,还可以利用DragEvent的dataForFormat()方法获取拖放数据,并结合自定义数据格式,例如“image”,以传递更多的信息。此外,可以设置DragManager的allowMultipleSources属性,允许多个源同时...
本教程将探讨如何使用Adobe Flex这一强大的富互联网应用程序(RIA)框架来实现多文件上传及自定义上传信息的功能。 Flex是一种基于ActionScript 3.0的开放源代码编程语言,它允许开发者创建具有丰富用户界面的Web...
### Flex基础培训知识点详解 #### 一、列表组件与项目渲染器 ...通过以上示例可以看出,自定义事件及事件类在Flex开发中扮演着重要的角色,不仅能够有效地实现组件间的数据通信,还能够提高代码的可读性和可维护性。
在Flex中,你可以配置HTTPService来指定URL、请求方法(GET或POST)、请求参数等。通过监听`result`和`fault`事件,可以处理返回的数据或错误。HTTPService在实现AJAX风格的应用程序中起着关键作用,它使Flex应用能...
首先,要实现拖放操作,你需要设置一个可拖动的组件。这通常是在组件的初始化代码中完成的,通过调用`setDragEnabled(true)`方法来启用组件的拖动功能。同时,需要指定拖动开始时的源数据,这可以通过创建一个`...
本文将深入探讨“Flex BlazDS 传递对象实例”这一主题,这涉及到Flex客户端与BlazeDS服务器之间的数据交互。 Flex是一种开源的、基于ActionScript的框架,用于创建具有动态用户界面的RIA。它主要用在Adobe Flash ...
在IT行业中,Flex是一种基于ActionScript和MXML的开源框架,用于构建富...总之,Flex中主程序与弹出窗口之间的数据传递是应用程序功能实现的关键部分,理解并掌握各种传递方法将有助于构建更高效、更灵活的Flex应用。
在Flex应用中,如果需要在多个窗口之间传递数据,可以使用Event Bus(事件总线)、LocalConnection对象或SharedObject等机制。Event Bus允许在组件之间广播事件,而LocalConnection对象则可以在同一台机器上的不同...
本教程将深入探讨如何使用Flex中的`VideoDisplay`组件创建一个自定义的视频播放器,并实现播放位置控制、工具栏样式定制以及与JavaScript的数据交互。 一、`VideoDisplay`组件 `VideoDisplay`是Flex提供的用于展示...
Flex3及FlexBuilder安装 - **安装步骤**: - 下载Flex SDK和Flex Builder。 - 安装Flex SDK。 - 安装Flex Builder并配置相关设置。 - **配置环境变量**:为了确保开发环境的正确性,需要将Flex SDK的bin目录...