正在加载...

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白云黄鹤站

还没找到您要的东西?Google试试看吧,
Google更注重原创、时效性好的文章:


本文相关评论: 才 27 条评论
  1. mx 2008-03-03 06:07:27

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

    • aw 2008-03-03 06:20:43

      事件中心?一个诸如EventMaster的类?

  2. good 2008-03-03 06:14:05

    98年开发的东东,确实挺久远的

  3. wizim 2008-03-03 06:17:43

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

    • aw 2008-03-03 06:21:06

      公司说as3有好多bug,这是什么公司啊……

      • wizim 2008-03-03 06:52:53

        我也觉得as3好像没什么bug,又不是cs3

        • kono 2008-03-03 10:56:27

          不能忍了,这是什么公司啊…报出来大家听听

          • aw 2008-03-03 10:58:37

            这不是公司的问题,而是产品技术选型的问题。哎。

            (评论已经达到最大深度!)
  4. wizim 2008-03-03 06:18:19

    沙发没了

  5. 胡戈戈 2008-03-03 06:42:02

    校园网其实不止国外的网站访问不了,很多国内的网站都访问不了,需要用代理的

    • aw 2008-03-03 10:59:10

      技术上早就可以解决了,迟迟不解决,哎,不做评价了。让他们在校园网里面玩去吧。

  6. acumon 2008-03-03 07:04:03

    这个数据有些意思

  7. My-Hou不務正業 2008-03-03 08:07:26

    时代是进步的~旧了就会被淘汰

  8. petcon 2008-03-03 11:00:15

    呵呵

    因为凡上白云没有装flash插件的都来你这里装了

    我每次重装之后也是来你这里装插件

  9. flashxm 2008-03-04 09:04:06

    要知道并不是所有可用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框架如何实现某些关键性功能也绝非易事。

    • aw 2008-03-04 10:40:57

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

    • aw 2008-03-04 10:44:34

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

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

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

  10. alex 2008-03-04 09:50:06

    as3开发的应用貌似占内存较大. 对于下载速度要求高的应用如何解决?

    • aw 2008-03-04 10:42:11

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

  11. sharpbeans 2008-03-04 11:18:06

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

    • aw 2008-03-04 11:36:51

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

  12. 皮皮狼 2008-03-05 09:35:03

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

  13. rison 2008-03-05 06:47:44

    flash终究只是flash

  14. alex 2008-06-06 06:22:42

    问个问题, 从flash里点击url能在多窗口打开吗? 有人说flash对target的支持不好…..对吗?

  15. op 2008-08-02 02:35:53

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

    • aw 2008-08-02 03:16:33

      这不是水平不水平的问题。你为什么不用c呢?

  16. hjzheng 2011-02-23 03:30:19

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

[支持Ctrl+Enter]为了我们大家和家人的安全,留言请慎重!
声明:
1、本站仅与见过面的个人博客交换链接,见此文
2、留言时的头像是Gravatar提供的服务。如果您有兴趣并且有闲暇时间,可以看看这里的介绍