事件是Flex重要的部分,对于事件的学习也是Flex学习中重要的环节
1,简单的事件派发
这里先新建一个项目,再新建一个Component名字为EventImage,这个组件EventImage的mxml代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
private function complete() : void
{
this.dispatchEvent( new Event(Event.COMPLETE ));
}
]]>
</mx:Script>
<mx:Image id="image" complete="complete()" />
</mx:TitleWindow>
这里我将事件的类型直接用 flash.vents.Event.COMPLETE。
再看主程序的代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
fontSize="12" xmlns:local="*" creationComplete="init()">
<mx:Script>
<![CDATA[
private function init () : void
{
myImage.addEventListener(Event.COMPLETE,completeHandler);
myImage.image.source = '1.jpg';
}
private function completeHandler( e : Event ) : void
{
trace('图片加载完成');
}
]]>
</mx:Script>
<local:EventImage id="myImage" />
</mx:Application>
使用Event元标签可以直接在组件的mxml代码里定义事件,如上<local:EventImage complete="completeHandler(event)" />
注意[Event(name="complete",type="flash.events.Event")]里边的name指的是 this.dispatchEvent( new Event(Event.COMPLETE ))语句里的Event.COMPLETE的值,type指的是事件类型。
如果不想用flash的Event类,可以自定义一个事件类,请继承Event类。
如果想让一个类具有派发事件的能力,请继承EventDispatcher类。
如果直接在as类中使用Event标签,直接在类名前添加[Event(name="complete",type="flash.events.Event")]即可。
上面的描述中请区分Event元标签和Event类,虽然名称一样但是意义就差很远了。
3,自定义触发器将事件和效果关联起来
首先新建一个类EffectTitleWindow继承 TitleWindow 代码如下:
package
{
import flash.events.Event;
import flash.events.MouseEvent;
import mx.containers.TitleWindow;
[Event(name="hideWin", type="flash.events.Event")]
[Event(name="showWin", type="flash.events.Event")]
[Effect(name="hideWinEffect",event="hideWin")]
[Effect(name="showWinEffect",event="showWin")]
public class EffectTitleWindow extends TitleWindow
{
public function EffectTitleWindow()
{
super();
this.addEventListener(MouseEvent.CLICK, clickHandler);
}
private var ck : Boolean = true;
private function clickHandler( e : MouseEvent ) : void
{
if( ck )
{
this.dispatchEvent( new Event("hideWin"));
}
else
{
this.dispatchEvent( new Event("showWin") );
}
ck = !ck;
}
}
}
然后在主程序中输入以下代码:
<mx:Fade id="hide" duration="500" alphaFrom="1" alphaTo="0" />
<mx:Fade id="show" duration="500" alphaFrom="0" alphaTo="1" />
<local:EffectTitleWindow
hideWinEffect="{hide}"
showWinEffect="{show}"
width="200" height="200"/>
当图片加载完成的时候的会输出 '图片加载完成'的字符串。当程序初始化的时候 首先给myImage添加了事件监听,监听类型为Event.COMPLETE的事件。
当myImage中的image加载图片完成时,会派发一个类型为Event.COMPLETE的事件。换句话说直接调用了主程序的函数completeHandler。
2,使用Event元标签:
稍作上面的代码的修改,便可了解Event元标签
EventImage:
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Metadata>
[Event(name="complete",type="flash.events.Event")]//Event元标签的写法
</mx:Metadata>
<mx:Script>
<![CDATA[
private function complete() : void
{
this.dispatchEvent( new Event(Event.COMPLETE ));
}
]]>
</mx:Script>
<mx:Image source="1.jpg" complete="complete()" />
</mx:TitleWindow>
主程序:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
fontSize="12" xmlns:local="*" >
<mx:Script>
<![CDATA[
private function completeHandler( e : Event ) : void
{
trace('图片加载完成');
}
]]>
</mx:Script>
<local:EventImage complete="completeHandler(event)" />
</mx:Application>
分享到:
相关推荐
### Flex4.5学习笔记知识点总结 #### 一、Flex基础——布局 **知识点1:Flex布局** - **垂直布局** (`s:VerticalLayout`): 控件垂直排列。 - **水平布局** (`s:HorizontalLayout`): 控件水平排列。 - **平铺布局**...
CSS提供了多种布局方式,包括流体布局(使用百分比定义元素尺寸,自适应屏幕大小)、定位布局(使用`position`属性,如`static`、`relative`、`absolute`和`fixed`)、Flex布局(弹性盒子,适用于一维布局)以及Grid...
7. **JavaSE基础笔记**:虽然标题和描述主要提及了Flex和Twaver,但提供的文件“JavaSE基础笔记.chm”可能是一个关于Java标准版(JavaSE)的基础教程,这对于理解Flex的后台数据处理和服务器端交互也很重要。...
在CSS样式的学习中,定位(Positioning)是一个关键的概念,它允许我们精确地控制元素在网页上的布局。本文将深入探讨CSS定位机制,包括static、relative、absolute、fixed以及flex和grid布局中的定位规则。 首先,...
【Stylus——优雅的CSS预...在学习和实践Stylus时,可以参考[lxy1152.github.io](http://lxy1152.github.io/)上的资源,这是一份整理的学习笔记,包含了详细的教程和实例,帮助你更好地掌握Stylus的魅力和使用技巧。
本实验的目的是掌握Flexsim仿真软件的操作和应用,熟悉通过软件进行物流仿真建模,记录Flexsim软件仿真模拟的过程,得出仿真的结果,并总结Flexsim仿真软件学习过程中的感受和收获。 四、实验设备 本实验所需设备...
6. **学习资源**:除了源代码,可能还会有相关的教程、笔记、讲义等,这些都可以作为深入学习编译原理的补充资料。通过这些资源,你可以了解不同视角下的编译器构造,进一步拓宽视野。 总之,这个压缩包是一个宝贵...
然后是关键部分——`js/main.js`,这里包含jQuery代码实现动态创建标签的功能: ```javascript $(document).ready(function() { var tagInput = $('#tagInput'); var tagContainer = $('#tagContainer'); ...
这个文件可能是程序的源代码片段,或者是关于该项目的附加信息,比如开发笔记或参考文献。 在Visual C++环境中,开发者可能会使用如Flex和Bison这样的工具,或者直接使用C++库(如Boost.Spirit)来实现词法和语法...
在本项目中,“笔记本电脑展示柜:使用HTML5和CSS3为笔记本电脑创建展示柜页面”是一个实战案例,旨在教用户如何...通过学习和模仿这个项目,你可以创建出自己的个性化展示页面,无论是用于学习、工作还是个人兴趣。