最近换了一家公司,由于业务需要,要使用Flex,而ActionScript3.0是Flex的基础语言,于是开始学习。
谈一谈看到现在为止对ActionScript3.0的看法吧。
从语法角度来看,真像是一个大杂烩,集合了Java、C#、Javascript的各种语法。
private、friendly、protected、public四级访问权限和Java一样,包也是采用类似Java目录结构的物理存储方式,至于说Java不是完全面向对象,存在基本数据类型,而ActionScript中则自动关联了对应的包装类,使得基本数据类型也可以调用方法等等,这点比较好,但是存在所谓的"全局方法"似乎又打破了其完全面向对象的设计,挺不明白的。
ActionScript的数值类型挺让我纠结的,Number类型很容易让人犯错误,既可以是整型也可以是浮点型,我不知道设计者这样设计是出于什么样的考虑,一般的编程语言里面,整数都默认为int型,而ActionScript里面默认为Number,也就是说,1/3这样的表达式不再等于0,而等于0.3333333,而且出现了浮点的加减法都出误差的情况,和Javascript倒是挺相似,唉,都是脚本啊。
然后是强类型问题,真是半强不强的类型啊,为什么这么说呢?很多类的确是要声明类型,而且编译时要检查的,但是,ActionScript又提供了动态类型,声明变量的时候可以用*或者Object等等,里面可以像Javascript一样运行时添加属性,而且可以用类型JSON语法初始化动态对象,这些又向Javascript学得有模有样,也许有关键字能够限制动态类型吧,不过动态类型这种东西的存在其实还是挺危险的。
再就是getter和setter了,看得出来ActionScript这里向C#取了点经,不像Java一样是方法,采用了get和set关键字声明的方法可以像属性一样使用,但令人遗憾的是,它不像C#里面有默认标准首字母大写(当然,程序员也可以完全不遵守),几乎看不出来getter和setter与普通属性的区别,而且编译器居然分辨不出同名的普通属性与getter和setter的区别,也就是说,属性名不能与getter和setter的方法名一模一样,属性还要另想名字,唉,一般属性前面加个下划线算了吧,真怀念Java的getter和setter就是个方法,多好。
然后是不支持方法重载,支持可变长度参数列表,实现方法重载只能靠它了,和Javascript倒是挺像的,不过这里可变长度参数列表是要声明的,当然,传参多样化的同时复杂度真是不小,对文档的依赖又重了,别人写的类,不看代码也不知道该咋传参,似乎有些本末倒置,本来方法的初衷就是方便别人使用。至于方法重写,和C#挺像,用override关键字。
强制类型转换的语法很别扭,一般的语言是:(类名)变量名,ActionScript是:类名(变量名),像调用方法一样,还有另外一种转换方式和C#很像,利用as关键字,转型不成功的就为null,这个我挺喜欢,不用写异常处理了。
当然,ActionScript里面也有不少强大的东西,目前个人觉得最强大的莫过于数组,比Javascript里面的数组还要强大得多,简直相当于是Java里面List和Map的杂合,数组里面可以放不同类型的元素,冒似强类型的语言这么做挺危险,数组可以动态地增加长度,即向头部或尾部甚至是任意位置压入值弹出值,甚至可以向一个远大于数组长度的索引位置设置值,前面的自动给你设为undefined(嗯,undefined,Javascript特色的东西),这哪是数组?简直比ArrayList和LinkedList加起来还强大。这还没完呢,具有Javascript特色的关联数组也可以存在,像Java里面的Map一样,基于键值对的数组,或者说基本上和Javascript里面的关联数组差不多,其实个人觉得,关联数组和动态类型差别也不是很大了。还没完呢,数组提供了很多排序、筛选等方法,可以自己写回调函数决定规则,算是运用策略模式的一个良好设计吧,虽然觉得还是有点缺陷。不过,这是我见到过的史上最强大数组,当然,同时带来的是使用的复杂性和不安全性。
ActionScript里面的事件驱动是基于回调函数的,个人觉得虽然效果上和Java差不多,但是还是不如Java的设计,基于回调函数的方法毕竟还是自由化了一些,不像基于接口那么规范,而且也违背了面向对象的初衷,传的参毕竟是个函数指针而不是对象,当然,作为脚本语言,也还算是不错了,至少比Javascript都用event强,这里好歹事件对象是分类别的,都是Event的子类。
还有一个挺看好的就是基于XML的E4X访问,感觉比XPath来得要强,主要是因为语言特性,动态类型的存在,使得E4X能得到良好的支持,对于XML,ActionScript的支持还是相当强大的,似乎已经剥离了对象的束缚,虽然强大,但也让初学者不知所措,好坏还要看各人怎么看了。
目前的了解就到这么多,没有系统地去看完一本书什么的,大略的初看了一下而已,后面应该会花一段时间好好研究一下。
发表评论
-
perl学习日记8正则表达式的应用
2012-07-06 09:44 8961.1 使用m// ... -
Java正则表达式入门
2012-07-06 09:36 566I am very grateful to her mot ... -
VC中的使用Skin++的步骤
2012-07-06 09:29 743Skin++界面库下载地址:http://www.uipo ... -
top.document.getElementById在模态窗口中的使用
2012-07-05 20:44 680普通页面中top.document.getElementB ... -
创建flex组件
2012-07-03 13:42 948现在,考虑一下当 ... -
Flex与.net交互
2012-07-02 10:09 466方法一: 把Flex生成的SWF文件(在目录../h ... -
Flex屏蔽默认右键菜单。
2012-07-02 10:09 675首先需要修改index.template.html生成的静 ... -
Flex 动态改变界面CSS问题
2012-07-02 10:09 693Flex SDK 提供了动态加载CSS,并更新界面skin ... -
flex按钮使用背景图片
2012-07-02 10:09 746基于美化的需要,有时候我会被要求给按钮贴上图片 下面 ... -
2012-07-02 09:41 5881...
-
实战 OpenLaszlo 与 db4o
2012-07-01 09:25 526本文于去年年底完 ... -
ExtJS 4 Grid组件
2012-07-01 09:25 521我们正 ... -
flash特效原理:标签云
2012-07-01 09:25 650其实标签云是一个比较常见的特效类,在wondefl里 ... -
windows下制作PHP扩展
2012-07-01 09:25 469转自:http://demon.tw/software/c ... -
AIR/Flex学习笔记(2)
2012-06-30 11:12 520AIR/Flex学习笔记(2) 2010 ... -
AS3.0类库整理
2012-06-30 11:12 302AS3.0类库整理 2011年10月26日 1、as3e ... -
FLEX和FLASH
2012-06-30 11:12 299FLEX和FLASH 2010年12月28日 ... -
Adobe Flex
2012-06-30 11:12 368Adobe Flex 2010年12月07日 Macro ... -
Flex
2012-06-30 11:11 307Flex 2011年05月05日 ... -
Linux内核设计与实现读书笔记(8)-内核同步方法
2012-01-20 08:34 667Linux内核设计与实现读书笔记(8)-内核同步方法 201 ...
相关推荐
ActionScript3.0殿堂之路.part1.rar
第1篇 ActionScript3.0语言基础 第1章 ActionScript3.0概述 第2章 搭建ActionScript3.0开发环境 第3章 ActionScript3.0语法 第2篇 ActionScript3.0面向对象特性 第4章 ActionScript3.0面向对象编程 第...
非扫描版,Flash ActionScript 3.0 殿堂之路 (完整版)
Flash Actionscript 3.0学习指南 有兴趣的TX可以看看哈:) 文件太大,我分成了3份
ActionScript3.0殿堂之路 ActionScript3.0殿堂之路
actionscript3.0开发的进度显示条项目
全书内容包括ActionScript 3.0 语言介绍、ActionScript3.0基本语法、事件机制、面向对象、数组、正则表达式、XML应用、常用的内置类、基本组件、数据列表组件、 DataGrid组件、文本处理、绘图、几何结构、音频、视频...
《ActionScript 3.0 语言和组件参考》概述 《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、...
第1~5章介绍了 ActionScript 3.0的基础知识,包括程序编写界面、数据结构、基本语法以及事件机制;第6~9章介绍了ActionScript 3.0的核心——类及以类为基础的面向对象程序设计方法,包括类的基本概念、...
最专业的最专业的最专业的ActionScript 3.0 ActionScript 3.0 ActionScript 3.0 ActionScript 3.0 ActionScript 3.0
ActionScript3.0 中文版 ActionScript3.0 api 中文版说明文档
ActionScript3.0权威指南与Flash ActionScript3.0 殿堂之路
本书详细地介绍了 actionscript 3.0的基础知识,包括 actionscript 3.0语言、actionscript 3.0对象的操作方法、显示列表的使用、事件模型、加载外部素材、可视化编程以及利用声音和视频增强应用程序等方面的知识,并...
英文版actionscript3.0,学习flash和as3.0的最佳助手!!!!
Foundation ActionScript 3.0 Animation Making Things Move ActionScript 3.0
ActionScript 3.0 提供了可靠的编程模型,具备面向对象编程的基本知识的开发人员对此模 型会感到似曾相识。ActionScript 3.0 中的一些主要功能包括: ■ 一个新增的 ActionScript 虚拟机,称为 AVM2,它使用全新的...
ActionScript3.0完全自学手册电子教案
ActionScript 3.0 语言和组件参考概述Adobe Flex 2 语言参考ActionScript 3.0 语言和组件参考是适用于 Flash® Player 应用程序编程接口 (API) 的参考手册。 Adobe Flex 2 语言参考ActionScript 3.0 语言和组件...