actionscript-3 - 向前推进AS3?

标签 actionscript-3 flash

嗨,我经常使用AS3进行工作,但是我来自Java / C / C ++教育,并且发现该语言有很大的局限性。

AS3世界似乎有两个基本阵营:


非技术性的创新阵营,他们希望事情顺利进行并且没有计算机科学
技术阵营(可能来自Java / C#等教育界)对使用Flex感兴趣并且习惯于使用相对复杂的语言功能(泛型,方法/操作符重载)。


AS3似乎使两个阵营都感到沮丧:

主要的creative阵营认为AS3比AS2的工作量大得多(它们是正确的),当需要收益时,他们看不到前进的方向,但是复杂性增加并且学习曲线相当陡峭。

主要的technical阵营发现AS3存在于Javascript和Java之间的某种程度的混乱中,并且只是实现概念的一半。

从技术上来说,我有自己的想法,但我认为这不是当前最重要的问题。为什么Adobe要使AS3更具技术性?它的大部分原始用户都没有采用它。

因此,我的问题是Adobe和用户社区如何才能使AS3不仅在技术上而且在作为一个完整的工具(所有用户都希望采用AS3)方面向前发展?

我的想法之一是,AS3应该研究如何再次变得更多脚本,但保留键入。可能像Scala中那样通过类型推断。
并且也要停止仿佛Java成为语言设计的巅峰之作,就开始思考一般用户试图解决的问题。

最佳答案

我非常来自第二营……我用pascal,后来的delphi和java做过很多编程工作,但是后来我决定女孩和吉他要酷得多……当我2006年偶然发现FlashPlayer时,我对所提供的可能性着迷并开始使用AS2进行编码... Flash 8在编码方面更是偶然,所以我很快转而使用MTASC和FlashDevelop并非常了解该语言...然后,我和认真使用FlashPlayer平台的人一样经历了艰苦的努力……所以这是我的观点:

AS2与AS3

好的,最重要的是:语言!= API ...核心AS3语言是最高级的语言,以及flash.utils中的以下内容:getDefinitionByNamedescribeType以及< cc>,Proxy和(可以说)Dictionary(可以与FlashPlayer交互或可以用核心语言构建的其他任何东西)...在AS2中,这是JSON值(ByteArrayBooleanNumberStringArray)以及ObjectFunction ...语言AS3和Flash Player之间的链接很小...例如mod_actionscript试图将Tamarin VM用作apache模块,当然使用完全不同的API ...

比较核心语言,会有差异...最后,我想说AS2是比AS3更强大的语言...您实际上可以在运行时更改整个语言,它是面向原型的(这是很多比基于类的继承更强大的功能),允许的混合,AOP等... AS2具有非常清晰和激进的语言设计...几乎没有人真正理解到... AS2与JavaScript一样遭受误解对我来说,这是AS2的无类型且受不兼容折磨的兄弟)……大多数人喜欢它,因为它是如此宽容……例如PHP,(除了其巨大的市场渗透率和易于安装的特性)其流行的主要原因...但是JS和AS是非常高级的,表达性强且功能强大的语言,而PHP更像是一种将某些东西混在一起的工具(这与PHP无关,我只需要另一种允许的语言来进行比较也是...大多数人在AS2(和JS)中使用的是是允许性的……我很少看到在AS2中使用基于原型的,基于功能,面向方面甚至是面向对象的编程……>here<我列出了一组非常酷的AS2功能,这些功能要么不好要么很少受雇...

AS3是Adobe向Java迈进的一步...它非常严格,静态,甚至在运行时也是如此,但是性能却要好得多...而且它非常无情,迫使您变得非常冗长... ASSetPropFlags带来了一个全新的体验自省级别,describeType是节省时间的好方法,而Dictionary是AS2 Proxy的超变体版本,弥补了已经失去的所有灵活性...

说到这种语言,我认为AS3实际上是向后退的。。。这一次,高级语言越来越流行,Sun决定创建JavaFX Script,而其他许多动态语言也可以在JVM和Linux上运行。 CLR,Adobe决定创建一个新的,更静态的AS2版本,以及一个可以很好地执行它的VM……我认为这有点矛盾……

比较API时,AS2和AS3 FlashPlayer API都有上下两面的地方……后者肯定更大……就它们的交集(显示列表,网络连接,XML处理)而言,各有利弊每个解决方案...很多人都有些沮丧,所有好的旧回调都消失了,并由新的事件模型替换了...认真地讲,如果您使用正确的IDE,没有什么区别...但是后者是更清晰,功能更强大(任何人都记得一个鼠标输入回调如何完全关闭所有子级吗?)……这也没关系,因为您可以在AS2中重新实现AS3事件模型,并且您可以在几天之内都可以在AS2中重新实现AS2回调系统……最后,我想说AS3具有一个更大,功能更强大的API,如果需要,可以将其包装起来,以减少冗长。 ..所以最后,我真的要说AS3 API更好...简化它真的没有意义...

每个人都在抱怨的点在于,它需要进行彻底的更改……直到AS2语言逐步开发,与上一版本几乎向下兼容,其结果是,您需要进行彻底的转换,而不是缓慢的过渡...用明确的话来说:去AS3,意味着扔掉任何东西,这排斥了很多人,尤其是设计师,因为移植代码是可行的,但是移植.flas实际上几乎是不可能的,至少老式的程序,其中的代码分布在无数的影片剪辑中……但实际上,它并没有比AS2难得多……它强加了一些东西,但是它具有更多的功能,并且解决了许多问题,实际上每个人都经历了从先前的动作脚本版本开始...

Haxe的创建者Nicolas Cannasse也被提及过几次,也posted some thoughts about this on his blog ... ...当然,他对Haxe作为替代品的介绍有些偏颇...但是我认为这很自然...重要Haxe的作者实际上是AS3的替代品,而Nicolas既很渴望也有能力提供AS3,尽管最终他作为主要的语言设计师有自己的想法,即语言的去向...但是让我谈论Haxe作为替代方法(这可能与Nicolas的帖子有些重复,但我只是尝试总结一下我的观点)

Haxe作为替代


我尚未尝试Haxe,但似乎
到所有行业的绝大部分
真正取代AS3。


这是错误的。Nicolas工作的Motion-Twin在Flash上​​可以工作很多……实际上,Haxe生成更快的AVM2字节码,并且与AS3不同,它允许使用炼金术操作码,因此最终,Haxe允许您要为AVM2编写更有效的解决方案...作为一种语言,它确实要丰富得多... Nicolas的帖子指出,与AS3不同,Haxe是一种开源语言...实际上,这意味着,这取决于您是否要加入社区并提出功能请求,甚至是学习OCaml,并直接做出贡献。FlashDevelop的主要作者之一Philippe Elsass最近也对Haxe做了nice summary ...没那么积极,但提供了一些概述...它还链接到Nicolas的帖子,该帖子介绍了MTypes的最强大的语言功能,即MotionTwin上Haxe的内部工作名称,在其发行并开源之前...

Haxe比AS3更具表现力...它具有泛型,键入第一类函数,带有参数的枚举,并提及MTypes功能列表中未列出的一些内容... Object::__resolve关键字提供了一些重载的可能性,但是我真的不明白为什么方法重载是有意义的...对于将来的版本multitypes are planned,它提供了类似的功能...运算符重载已经讨论了很多次,并且很可能不会实现,因为它使代码交流困难...

最终,我相信Haxe是AVM2的一种更好的语言...并且它变得越来越好...这个stackoverflow question社区的一些学者提供了更多学习Haxe的理由...

AS3的未来

我认为AS3不会过快地向前发展... Adob​​e有更好的工作要做... Adob​​e使用FlashPlayer作为部署Flex应用程序的平台...这些都是用MXML编写的,毫无疑问,它非常强大声明性语言,已翻译为AS3 ...这就是为什么Adobe需要AS3和AVM2快速但又不是真正要更具表现力的原因...使用热aka闪存催化剂,设计师将被排除在实际的编码过程之外,一切都会转向Flex,使用所有Flex服务器解决方案...

我不喜欢Flex,对我来说,坚持使用AS3并不是一个选择... Adob​​e正在将Flash平台移向Java平台,我对此并不感激...我总是更喜欢Flash而不是Java,因为它是如此轻量级和ActionScript,因为它是如此高效...我对AS3的新功能非常不满意,但我最终决定继续前进,因为在我看来,AS3的发展正处于停滞状态...

最后,由您自己决定路径...现在是MXML(以及一些AS3)或Haxe ...或尝试编写具有LLVM前端的某种语言并使用alchemy将其编译为AVM2。 .Objective-C可能是一个好主意...

所以无论您选择...祝您好运...

ps:我认为您不应该使用术语“脚本”语言,当您指的是高级,富有表现力和动态的……bash脚本也是一种脚本语言,但实际上与Ruby,Scala或其他都不一样ECMA方言...

关于actionscript-3 - 向前推进AS3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1378042/

相关文章:

apache-flex - 将CharCode转换为Char?

actionscript-3 - 有没有用FlashDevelop学习AS3的好教程?

jquery - 为什么 tableTools 对同一个 SWF 文件进行多次调用?

android - 通过 Actionscript 2.0 创建 Android 应用程序的可用选项

apache-flex - 是否可以在 Flash 或 Flex 中重视存储 cookie?

actionscript-3 - ActionScript 3 : sounds in Movieclip timeline cut each other off

actionscript-3 - FLEX 4 s :Scroller, 如何将包含的组件纳入 View ?

java - 我可以在 ActionScript3 + Flash 中制作 Android 游戏吗?

actionscript-3 - 声音合成 : interpolate betweeen frequencies using AS3

wpf - Windows 7 x64 上的闪存 ocx "Class not registered"