全面放弃ActionScript2吧

ActionScript1/2(ActionScript2只不过是ActionScript1的“编译时”增强版),自1998年至今,已经存在整整十年了。AS2由于初次将OOP(面向对象)的理念引入Flash开发而“一炮走红”。我还记得在2004年的时候大量关于OOP、AS2的讨论涌现出来,也有许多热心人出了不少好书来解释,比如Luar的《AS2与RIA开发》。然而留给人们更多的是无止境的疑问……

随着RIA产品需求的日益复杂化,AS2的弱点在实际应用中一再爆发:丧失了AS1高效灵活的特性不说,事件处理机制完全是一塌糊涂。要不是Macromedia给出的mx.utils.Delegate和mx.events.EventDispather两个类,估计所有的OOP开发者都要吐血而亡。

今天我就被AS2的事件机制给折磨了整整1个小时:有某类VideoItemList引用若干个来自XML数据支撑的VideoItem类,在VideoItem中有按钮响应事件需要调用外部的JavaScript函数,并传递本类(VideoItem)的唯一标识符。本来可以在VideoItem类中直接完成,但为了将接口“完美地”提供给另一名开发工程师,我不得不将VideoItem类中的onRelease方法代理(Delegate)+广播(Dispatch)出来到VideoItemList中,再作事件广播(Dispatch)。

这下好了,在VideoItemList中addEventListener去“监听”这个事件响应再对外广播。可是,监听到的函数体中的this并不指向VideoItemList类。

我知道肯定有方案可以解决,但我放弃了。我不想把有限而宝贵的时间浪费在这样一个愚昧的ActionScript事件架构上去做无聊的hacking。直接在VideoItem里面进行ExternalInterface去和JavaScript通信,以后再也不做ActionScript2的项目了。

大家一起拥抱ActionScript3吧!

附:给一些抛弃ActionScript2的铁证吧:

以下是我Blog统计到的FlashPlayer9的安装情况,只有不到2%的人使用FlashPlayer8:

即便在教育网这种“角落”(为了某些人某些扯淡的理由,教育网一直不能访问国外网站)8.0也只有3%了:

(数据取样来自华中科技大学BBS白云黄鹤站

Advertisements

27 thoughts on “全面放弃ActionScript2吧

  1. 你如果作一个单例得事件中心呢 由它发送事件并添加侦听器呢?这样是不是能好些呢?

  2. 沙发,我一直在学as3,面试的游戏公司非考我as2.我跟他说as3好,公司说as3有好多bug,而且as2很成熟,公司很多同事都习惯as2。但我实在不想再回过头用as2了,我现在只能等公司彻底抛弃as2,我再去应聘了。

  3. 要知道并不是所有可用flash开发的东西都适合用as3的,或许as1更快更简单。而且,as3也并不是完美无暇的。
    引用http://www.infoq.com/cn/news/2008/02/language-framework-impact:
    在Flex身后的是ActionScript 3语言。它是逐渐成型的EcmaScript 4 规范的一个版本,它合并了Java语法中最丑陋的部分和JavaScript最离奇孤僻的一些特性。ActionScript 3试图在一锅汤里面同时加入动态型别和静态型别这两味主菜,此外还有函数式编程和面向对象编程。这锅汤已经没法喝了,看一眼都会让人眼花缭乱、头晕目眩。
    但是Flex的设计者把这些复杂性都隐藏起来了——就像Rails一样——Flex应用只是由一些简短的ActionScript代码片段、小段函数,与一个基于XML的UI布局语言混合而成。学习Flex比学习ActionScript 3高级特性的难度低多了,不过要掌握Flex框架如何实现某些关键性功能也绝非易事。

    1. 恩,也许是我没有说清楚,如果不能用AS3,还不如直接用AS1
      这是一个悖论:一个10人合力的项目必须OOP+严格协调,而一个1人制作的小东西,用AS1快速交付更实际

    2. infoQ对Flex的评价很商业化嘛……

      在Flex身后的是ActionScript 3语言。它是逐渐成型的EcmaScript 4 规范的一个版本,它合并了Java语法中最丑陋的部分和JavaScript最离奇孤僻的一些特性。

      我不知道Adobe,或者说赋有Macromedia灵魂的这个组织,去考虑Java和JavaScript干嘛?AS3本质上(或者说首要任务)是对AS1、2最好的补充,而不是去取悦Java、JavaScript程序员。

    1. 1、AS3的内存占用比AS1/2时代要好得多,见此文:http://as3blog.com/as3/as3tip-take-care-of-resource/
      2、AS3开发出来的swf体积并无明显增大,下载速度不用担心。

  4. 虽然我和你一样希望快点转到AS3开发,但是目前的普及率似乎还是不够,特别是产品对象为“大众”的情况下。
    你的数据我觉得考查对象不太对,第一个,对象是看你blog的人,这些人大都是flash爱好者,高版本的flash安装自然很正常;第二个,对象是在校大学生,毕竟也是属于科技前沿的人,9的安装率肯定也高于“大众”的9安装率。
    个人感觉,如果产品对象是“大众”的话,转移到AS3开发还是需要再等几个月的。

    1. 说的有道理。不过各大视频网站力推H.264高清视频以及全屏播放功能相信对刺激FlashPlayer9的发展有很大的帮助。
      此外,既然已经明确了未来的技术前景,一个优秀的开发人员千万不要等市场成熟再动手。

  5. 大项目绝对是as3啊。
    不过我建议用as2入门。作为编程语言初学者,一款能独立完成小项目而且还能品尝到编程乐趣的语言。非as2莫属

  6. 那是你as2水平不够哦!我喜欢as2的模糊,迄今没有什么as2无法解决 非要as3出马的。
    实话说,as3试用了一番,实在不是什么令人喜欢的东西。

  7. 我最近在修改PowerChart的source Code 它就是用AS2写的,事件处理方式对我这样的菜鸟,我是完全理解不了。所以我希望赶紧过度到AS3,至少更面向对象,因为我对Java很熟啊

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s