注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

IOS & JAVA KEY

(iMilo)

 
 
 

日志

 
 
关于我

All the splendor in the world is not worth a good friend!! Hello my friend!!

网易考拉推荐

使用ActionScript添加事件侦听器  

2010-05-04 10:28:23|  分类: Flex4 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

    前面我们已经学习了再MXML脚本块中创建一个MXML的“change”事件来调用ActionScript函数《Flex事件对象入门》,但是一些ActionScript类在MXML中无法体现,这就意味着通过MXML语法来创建事件监听器是不存在的,所以必须使用ActionScript来注册监听器。高级的事件处理,需要添加和删除事件监听器,而这些只能在ActionScript中实现。而,一些开发者更喜欢在MXML中使用ActionScript。

下面我们使用ActionScript添加事件侦听器来实现《Flex事件对象入门》功能:

首先,打开demo工程,然后再打开demo.mxml文件,并切换到Source模式下,修改后的代码如下:

<?xml version="1.0" encoding="utf-8"?>

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"

               xmlns:s="library://ns.adobe.com/flex/spark"

               xmlns:mx="library://ns.adobe.com/flex/mx"

               creationComplete="initApp()"><!—-①初始化,调用添加侦听器程序-->

    <fx:Script>

        <![CDATA[

            import mx.controls.Alert;

            import mx.events.CalendarLayoutChangeEvent;

            <!--②侦听器程序-->

            private function initApp():void

            {

                startDate.addEventListener(CalendarLayoutChangeEvent.CHANGE, showChange);

                endDate.addEventListener(CalendarLayoutChangeEvent.CHANGE, showChange);

            }

            private function showChange(event:CalendarLayoutChangeEvent):void

            {

                Alert.show('您选择的日期是 : ' + event.target.selectedDate.toDateString());

                if((event.target.id == 'endDate') && (startDate.selectedDate > endDate.selectedDate))

                {

                    Alert.show("结束日期应该大于开始日期!");

                }

            }

        ]]>

    </fx:Script>

    <s:Label text="开始日期" x="446" y="171" fontSize="16" color="#F40909"/>

    <mx:DateChooser showToday="true" id="startDate"

                    horizontalCenter="0" verticalCenter="0" />

    <s:Label text="结束日期" x="662" y="175" color="#EB0909" fontWeight="bold" fontSize="16"/>

    <mx:DateChooser showToday="true" id="endDate"

                    horizontalCenter="219" verticalCenter="0" />

</s:Application>

说明:

①     creationComplete事件会在组件排列、布局、显示完成后触发,好处:当事件控制代码依赖于组件的大小、位置、外观时使用ActionScript添加事件侦听器是更好的选择;

②     creationComplete="initApp()" :initApp()表示添加事件侦听器的程序;

③     startDate.addEventListener(CalendarLayoutChangeEvent.CHANGE, showChange); :startDate表示组件的ID,addEventListener(a,b)表示添加侦听器,CalendarLayoutChangeEvent.CHANGE表示一个常量其值为“change”及控件的change属性(在《Flex事件对象入门》如:change="showChange(event)"),showChange则表示函数showChange(event:CalendarLayoutChangeEvent),在我的理解里面类似于AJAX中的回调函数。

最后:运行效果如《Flex事件对象入门》。

  评论这张
 
阅读(1024)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017