标签为 AS3 的存档
Flex学习笔记五&关于FDT的和Eclipse的一点牢骚
Author: 柳世杀神·GabrielGon12 一 2008
1、ComboBox,重点理解DropdownEvent事件。在列表被弹出或收回时,会分别派发DropdownEvent对象的OPEN事件和CLOSE事件。对这两个时间进行监听,便可捕捉用户的动作。2、注意,与之外的都是一个整体,而不是分开的3、发现还有很多人不明白这个void为什么要加。这里说明一下:是为了方便不带参的function除错(debug)。例如: function testVoid():void{ trace("testVoid") } 然后我testVoid(1),运行这时候程序就会出错。 函数参数为void的意思是这个函数不接受任何参数。所以,养成好习惯,只要不传参的function等,都加上void声明吧4、Alert的show是一个静态方法,格式如下: show(text,title,flags,parent,closeHandle,iconClass,defaultButtonFlag)5、关于evt:CloseEvent,CloseEvent之后的值是在evt.detail6、关于itemRender,实在不明白概念的,就理解为“界面/组件绑定”吧……是,这样对真正的意思有些偏移,不过若实在对itemRender的概念混淆,也只能暂时在全部顿悟之前,先这样理解吧。这里也说说真正的意思: 用来控制数据表现形式的机制我们称之为“itemRender”。用户可以定义自己的itemRenderer对象,来覆盖某些有itemRenderer对象的组件的默认属性。自定义的itemRenderer相当于一个简单的自定义组件。同样,里面可以放置其他控件来表现更加丰富的内容。 顺便一说,这个东西相当使用,可以用来实现很多有趣的功能。 [2008.1.14附加] 可以作为用来作为与itemRender的组件又一个共同的特点,那就是拥有一个名为“data”的属性。 当组件被用作itemRenderer时,就拥有了data属性。data代表的是当前元素的数据信息,一般是Object类型,包括若干属性,data的数据格式和数据源的数据格式是一一对应的。 itemRenderer的data是由控件主动传入的,直接使用就可以了。 比如datagrid的数据源是books,其中每一条数据类型是book,那么itemRenderer的data也是book类型。7、关于function的函数中带事件 如internal function selectHandler(evt:CloseEvbent):void{}。意思是说将事件evt:CloseEvbent的结果带入到函数中,从而供这个function进行使用。这个和我们一直理解的function一样,只是带入的东西不同罢了 然后,这里是作者Email的解释(以bookList.addEventListener(DropdownEvent.CLOSE,chooseHandler)为例): bookList.addEventListener(DropdownEvent.CLOSE,chooseHandler); 这句代码的意思是添加一个事件监听器,chooseHandler是函数名。 在使用 addEventListener方式添加事件监听函数时,该函数在定义时必须定义参数类型,也就是监听的事件类型。这样,当目标发送该事件时,会把事件作为参数传递过来,如果函数没有定义参数,也就无法接受事件传递的信息。 作者EMAIL2: 在使用 addEventListener方式添加 事件监听函数时,该函数在定义时必须定义参数类型,也就是监听的事件类型。这样,当目标发送该事件时,会把事件作为参数传递过来,如果函数没有定义参数,也就无法接受事件传递的信息。 比如: btn.addEventListener(MouseEvent.CLICK,doClick); 那么,doClick函数在定义时,就必须是:doClick(event:MouseEvent),这个参数的名字可以随便定义,但类型必须是 MouseEvent或者MouseEvent类的父类。 事件类型的工作机制是这样的: 1、注册事件监听器,把监听对象和监听函数记录下来,也就是把btn和doClick记录下来。 2、当事件发生时,程序开始检查是否有对象进行了监听,如果有,这些监听函数就会被调用,调用的形式就像:obj.doClick(event),其中obj表示添加了监听器的对象btn,也就是执行了 addEventListener的对象,参数event表示事件对象。因此,doClick函数必须定义准确的参数,参数类型必须是event的类型或其父类类型,否则,变量类型不对,将引发运行错误。 如果一下子还是无法理解过来,那么就记住这点:addEventListener的是什么事件,那么在这个事件触发的自定义函数中,就要定义这个addEventListener监听的事件的事件类型。 例子: exp1: bookList.addEventListener(DropdownEvent.CLOSE,chooseHandler); internal function chooseHandler(evt:DropdownEvent):void{} exp2: btn.addEventListener(MouseEvent.CLICK,doClick); internal function chooseHandler(evt:MouseEvent):void{} 然后就可以通过evt来调用监听事件的参数和值了。如 internal function closeHandler(evt:CloseEvent):void{ if(evt.detail==Alert.YES){ viewLabel.text="选择的是:yes" }else{ viewLabel.text="选择的是:No" } 可能有些朋友已经注意到了为什么后面带入的evt中没有具体的事件名?而仅仅是类的成员名?是这样,我们以MouseEvent来说 导入的MouseEvent对象包含了所有的鼠标事件,如单击、双击、鼠标按下、鼠标松开、鼠标移动等等,这些事件名被封装成MouseEvent类的成员属性。在使用时,我们直接引用类成员名,而不需知道真正的事件名。嗯,最后,记住今天所说的:数组,push吧!BWT:FDT你是个球,你是个大球,下了几百次都下不下来

最活跃用户