




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
FLEX简明教程因为大家对JAVA都很熟悉,所以这个文档就是从FLEX和JAVA的一些比较来进行讲解,FLEX的核心语言是ActionScript,而FLEX3用到的相应是ActionScript3,所以这里学习FLEX其实就学习ActionScript,因为我也是新手,有说得不正确的地方还希望大家指出来更正。1、 基本数据类型和JAVA的区别ActionScript3的常用基本类型大致有以下几个:int ,uint,Number,Boolean,String,这几个基本类型中,值得注意的是Number类型,它是ActionScript3中浮点型的数据,相当于JAVA的Long和Float的集合。2、 类和包的声明,导入包。ActionScript3的类声明和导入包和JAVA是一样的,包声明和C#类似,用一对大括号把类包围在package里面,下面声明一个com.zhongrx包下的一个Test类package com.zhongrximport flash.text.TextFieldType;public class Test3、 修饰符ActionScript3可用作类、属性、方法的常用修饰符有:public ,private,protected, internal,其中public ,private的作用范围和JAVA是一样的,而internal则和JAVA的default一样(同一包中可访问),在没有指明修饰符时默认是internal,值得注意的是protected,它的作用范围比JAVA要小,JAVA中protected可以被其及其子类和同一包中的对象访问,而ActionScript3的protected却只能被其及其子类访问,外部不能访问。4、 变量和函数声明的区别ActionScript3中,函数和变量和JAVASCRIPT类似,变量声明格式如下:修饰符 var 变量名 : 变量类型,比如我声明一个类型为字符串的私有的变量name,其结果如下:private var name:String;函数的声明格式如下:修饰符 function 函数名():返回值类型 ,比如声明一个没有返回值,名为test的公有函数,其结果如下:public function test():void值得注意的是无论是ActionScript3的属性和函数都可以声明为无类型,可以把上面的属性和函数声明修改成如下:private var name:*;public function test():*号代表无类型,意思是其类型声明的属性或者是方法的返回值可以在运行的过程中随意转换成其它类型。5、 Object对象和JAVA的区别 ActionScript3和JAVA的所有类都是Object的派生类,但两者的区别还是蛮大的,JAVA中,无论是Object对象还是一般的类对象,他们的属性是已定好了的,不能在运行的过程中为对象添加属性,而FLEX的Object却能够实现这一点,例如我们可以这样声明一个Object变量,然后给它加上属性:var ojb:Object = new Object(); = “张三”;经过以上的赋值后,ojb对象就多了一个值为“张三”的属性name。6、 函数的重写和重载ActionScript3函数重写的规则和JAVA没有什么区别,唯一不同的是要在函数的修饰符前加一个关键字:override,至于函数的重载,ActionScript3是不支持的,它处理重载和JAVASCRIPT相似,例如有以下函数:public function test(name:String,age:int = 20):voidtrace(name);trace(age);那我们在调用这个函数的时候可以这样:对象.test(“张三”,100);/输出结果为:张三 100也可以这样:对象.test(“张三”); /输出结果为:张三 20意思是我们调用test函数时可以同时给两个参数,也可以只给一个,但要注意,前提是参数有默认值的时候才可以省略,例如test函数中的age的默认值是20,我们在调用test的时候可以不指定这个参数的值。7、 MXML的理解MXML和HTML类似,以下是MXML的代码:页面里面有一个名为“确定的”按键,当点击它的时候会触发click事件,然后执行注册的showMessage函数,弹出一个对话框。效果和下面HTML一样:function test()alert(“确定”);其实在FLEX中,MXML其实也是一个ActionScript类,只不过,用MXML来表示可以实现图形化而已,但相应的也付出了一些代价,用MXML来自定义组件和用ActionScript类比较,后者会更灵活,且MXML是没有构造方法的。例如上面的,它的源代码就是一个ActionScript类,在FLEX 中,我们自定义的类可以自己NEW出来加到容器中,也可以用标签的形式加到容器中。例如上面的MXML的代码我们也可以NEW一样Button出来,把它加到当前容器中,效果和上面是一样的,代码如下8、 事件的生命周期ActionScript3的事件是非常重要的,可以说是处处是事件,所有事件的父类是Event,ActionScript3事件可以按不同的事件源来分类,当然我们也可以自定义事件,只要继承Event就可以自定义自己的事件,Event有两个比较常用的属性,一个是currentTarget,另一个是target,两个属性都是指向事件源,它们的区别是:currentTarget是指向当前捕捉此事件的组件,而target由始至终都是指向最初发起此事件的源,例如代码:当我们点击Button时就会触发鼠标的click事件,此时很明显触发该事件的事件源是Button,但捕捉事件的组件是Panel,所以event对象的currentTarget是指Panel,而target是指Button,当然Panel要捕捉到Button的事件是有前提的,Button必须是Panel的子组件,以上代码中,如是Button是在Panel外面声明的话,当点击Button时,test方法是不会执行的。上面是通过标签的形式捕捉事件,在script块中也可以添加一个监听器来捕捉,而且还可以注销监听器,在一定的程序上可以优化内存的使用,例如上面的代码可以改成这样也可以达到一样的效果:上面的代码中panel.removeEventListener(MouseEvent.CLICK,test);是 删除panel对鼠标点击事件的监听,当执行到这句时,下一次鼠标再点击按键的时候,test方法是不会执行了,上面代码中,这个标签我给了一个id的属性,值为panel,其实意思就是相应于声明一个Panel类型的引用,这样在script块中我们就可以直接用panel来执行Panel的一些功能了,而不会像JAVASCRIPT那样要getElementById()这么复杂来获取标签对象。事件的生命周期分三个阶段,分别是捕获、目标,冒泡,这三个阶段是从上而下的,以上面代码为例子,当我们点击Button时,首先事件是从Application流进来,然后经过Panel,最终到达Button,然后再由Button向上返回,经过Panel,然后到达Application。在这过程中,从Application到Panel这个阶段称为捕获阶段,而流到Button时这个阶段称为目标阶段,然后再由Button向上返回时称为冒泡阶段,我们可以在任何一个阶段去捕捉事件,比如我们要在捕获阶段捕捉事件,只要把panel.addEventListener(MouseEvent.CLICK,test);修改成panel.addEventListener(MouseEvent.CLICK,test,true);就可以了,第三个参数是指定捕获事件的阶段,默认为false,意思是从目标阶段和冒泡阶段去捕捉事件。那我们可以捕捉事件,当然也可以分发事件,分发事件很容易,只要调用对象的dispatchEvent(event:Event)方法就可以了,此方法接收一个Event对象的参数,如下代码所示:以上代码中,我点“ABCD”按键去执行dispatchEventTest方法,然后dispatchEventTest方法再利用“事件测试”按键去分发鼠标单击事件,这样我们不用点击“事件测试”按键,Panel也能监听到“事件测试”按键的单击事件,原因是我们在代码中主动去分发了“事件测试”按键的单击事件。9、 回调数的应用用过JAVASCRIPT大家应该对回调函数也有一定的了解,ActionScript3的回调函数和JAVASCRIPT是一样的,例如上面的讲到事件监听中就用到回调函数,代码panel.addEventListener(MouseEvent.CLICK,test);中,test其实就是一个回函数,它指向test函数,其实我们可以把上面的代码简写成这样,以达到把test函数合并起来写:但是这样写的话往往会出现意想不到的结果,我查了一些资料是不推荐这样写的,其实我在做程序的过程中也遇到过这种情况,所以还是不推荐这种写法。10、 XML的应用ActionScript3读写XML是很方便的事情,感觉比JAVA方便多了,ActionScript3有XML类,我们用多种方法实例化一个XML类:var xml:XML = new XML(测试);var xml:XML = new XML(测试);var xml:XML = 测试;以上三种方式的结果都是一样的。XML的操作方式如下:一 、读取节点那我们要读取这个XML的name节点值时可以这样,当我们要读取name节点的属性type的值时,可以这样xml.type。那当有很多个name节点时,我们还可以0这样的方式去读取相应的的节点,如果节点名有特殊字符,比如var bookXml:XML = 测试我们也可以这样去读取相应的数据xml“book-name”。二、修改节点值那如果要修改XML的节点值时,可以直接把值赋给节点对象,例如我要把book-name节点的值改成“FLEX教程”,可以这样写bookXml “book-name” = “FLEX教程”,值得注意的是不能把XML对象当值赋给节点,因为这样不是修改节点的值,而是重写节点对象了,例如我们如果这样写bookXml “book-name” = 100,那bookXml就变成100。三、添加节点如果我们要添加一个节点,可以调用bookXml的appendChild()方法,例如bookXml. appendChild(张三);这样bookXml的结果就变成测试张三四、删除节点删除一个节点可以这样delete bookXml. author,执行这条语句后,bookXml的结果就变成测试张三11、 和JAVA交互的方式FLEX和JAVA的交互方式有三种:WebService、HTTPService、Remote Object。这三种方式我用的感觉,Remote Object是最方便,而且效率是最高的一种,WebService的效率最低也最不方便。在交互不多的情况下,我们可以选择用HTTPService这种方式,这种方式其实就像我们平常在JSP里面讲求服务端STRUT的ACTION一样,举个例子:上面的代码中,我们首准备好要发送的数据,这里我用Oject对象,因为它可以任意的加属性,很方便,当然如果我们没有数据发送到后台,也可以不声明。然后就是声明了一个HTTPService对象,然后为对象添加一个请求成功后的监听器,接着就是为HTTPService对象指明请求的地址、请求方式、发送的参数,最后调用HTTPService的send()方法就可以了,后台直接用request().getParameter()就可以获取到相应的参数了,然后后台用IO的输出流把结果输出去,FLEX的回调函数就会执行,回调函数的利用event.result就可以获取到服务端的返回结果,其实这种和后台的交互方式和AJAX基本上是一样的,值得注意的是userLogin.resultFormat这句代码,上面我是注释了的,这句的意思是预先设置服务端返回数据的类型,它的值有三个可以选:Object,xml,text,默认是object如果我们后台输入的是XML,那这里也要设置相应的返回格式,否则是得不到想要的结果。其实这里的resultFormat和JQUERY的AJAX对象的dataType属性意思是一样的。Remote Object交互方式其实和DWR类似,也是利用反射机制,可以在客户端直接调用服务端的方法,ADOBE公司为Remote Object交互提供了两个框架:LCDS和BlazeDS,前者是收费的,后者是免费的。BlazeDS是LCDS的一个简化版。因为BlazeDS的Remote Object从项目的建立到配置需要很多讲解,这里我就不自己写了,找了两个文章,然后这里连接去看就好。12、 FLEX的CSSFLEX支持CSS,大部分的CSS和在HTML里面用是一样的。13、 动态类(dynamic class)其实我们前面提到的Ojbect类就是一个动态类,动态类的声明和普通类的区别是在前面多了一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年河南省郑州市八十八中八年级(下)期中数学试卷(含答案)
- 养殖小区出租合同范本
- 房东日常收租合同范本
- 公共平台转让合同范本
- 夫妻买房的合同范本
- 空房公寓出租合同范本
- 自家车队维修合同范本
- 车位分期还款合同范本
- 定制制服服装合同范本
- 农业种植西红柿合同范本
- 外研版高一到高三单词表
- 2025年度智慧社区租赁意向协议书
- 《园林绿化工程施工方案》知识培训
- 《鼻内镜上颌窦开放》课件
- 2025版商业综合体物业服务合同招标文件3篇
- 建设工程降低成本、提高经济效益措施
- 课程思政融合深度学习的“实变函数与泛函分析”课程教学体系构建
- 助听器与辅听设备基本性能及使用建议的专家共识
- 2025年日历表( 每2个月一张打印版)
- 四年级下册数学200道竖式计算
- 中职班主任管理培训
评论
0/150
提交评论