7月QCon广州站2022,关注Web 3.0、数据架构选型、数字化转型等热门话题,点击了解 了解详情
写点什么

Flash 务实主义(一)——Unnecessary war(不需要的战争)

  • 2011 年 2 月 22 日
  • 本文字数:2469 字

    阅读完需:约 8 分钟

【编者按】随着富互联网技术(RIA)的潮流,Flash 技术在互联网中的应用越来越多,国内 Flash 开发者数量也在以惊人的数量增长。本专题——务实主义,将主要介绍如何在 Flash 开发过程中尽量提高自己的开发效率,不为花哨,只为务实。文章中会提及许多 flash 开发中的实用技巧,期望对各位看官能有所帮助。


不需要的战争

很早以前就有一种说法——技术行业里最无聊的莫过于语言战争。最典型的就是 Java 与.net 之间旷日持久的战争与和平,期间掺杂着公司的宣传手腕,永不休止的针对细枝末节的口水战。一件事情要争论起来始终都有素材,问题在于这种大规模的嘴仗,即使产生了结论也难以被沉淀下来。而且,其结论往往也无法产生任何有意义的效用。最终该用.net 的还是用.net,该用 Java 的还是用 Java,任你怎么宣传,也许能改变初级开发人员的流向,但真正决定一个语言是否被使用的是语言本身的特性,对特定需求的适应程度,而语言的使用数量则决定了开发者的需求量。这是一个完全相反的因果关系,开发人员对语言的影响,微乎其微。

所以说,讨论这些就是些无聊的事。语言之间的对战尚且如此,若是内战的话,岂不是太过愚蠢了。

这次的针对点不是 Silver Light,也不是 HTML5,焦点矛头正是 FLASH 本身。

FLASH**** 在历史上复杂性和特殊性

也许对于程序员来讲,FLASH 就是 AS 的代名词,但很长一段时间都不是这样。FLASH 很长一段时间都是动画,甚至还不是交互式动画,说的直白点,就是网页广告。比起一般 JPG,GIF 方式存在的广告,不仅体积更小,效果体验也要领先很多。而普通视频流的广告由于水管原因实际上是不能实际应用的。所以 FLASH 便活了下来。之后的 FLASH 卡通动画之流都是副产品,毕竟缺乏商业价值。而由于 FLASH 自己基于元件和时间轴创作的特性,很适合向里面加入脚本引擎。虽然 AS1 时这个引擎提供的功能还很弱,但是基于有 IF 和 GOTO 就能写出任何功能的机理,AS1 提供的功能已经很多了。所以网站小游戏一类自然也就冒了出来。再之后,有了 AS3,基本解决了语言本身的障碍,开发稍大的项目成为了可能。虽说 FLEX 只是一个官方 framework,属于 AS3 诞生的产物之一,这样的 framework 会继续出现,总有一天会被其他的各式框架淹没……但在现在看来确实扩展了企业应用方面的使用,一些网站和游戏还有应用程序类的也可以使用。至于 AIR 这个玩意儿……

可以看到,FLASH 的功能一直在增加,但这种增加产生的影响除了增强原有功能,还有很大一部分是在扩展新的适用领域,并不是对原本内容的升级和取代。

新事物和旧事物的竞争与共存

诸如,自从 AS2 出现类之后,与原本一直使用的时间线编程的关系。

实际上,时间线编程是与动画结合最好的一种方式。时间线编程仅仅是把代码插入到动画中,只是让动画转变为交互动画。如果你的网站主要是动画,你的游戏很容易转换成动画的形式,那就很合适。即使在现在,制作一些游戏产品宣传用网站,时间线编程也是很适用的手段,优点自然是单文件,简单的自加载,直观快捷,即使是美术人员也很容易掌握,缺点则是表现受到限制,只适合用在固定动画上,而且美术和编程人员的协作模式在修改方面相当低效,只适用于基本不进行修改的一次性产品。只不过,这样的产品实际上非常多。

新事物想要取代旧事物,需要的条件并不是只是“比以前好”,而是“比以前好很多”。确实也应该是这样。技术的更替需要不小的成本,不仅仅是人员的培训成本,还包括使用风险一类,原有经验的不通用,流程的变化,如果最终结果还仅仅是比以前好,那这就算白忙活了。如果老老实实写外部类来做这种一次性的网站,虽然的确可行,也不一定会多费多少成本,但没有好处的话,为什么做?当然,对于并非一次性使用,需要常常更新,或者是一些需要反复根据需求变更,而且是程序和美术都需要变更的情况,实行代码与资源分离,不管实现起来有多麻烦,因为会“比以前好很多”,最终的时间成本都是合算的。这种情况依然固守旧模式,终将自食其果。

相对的,AS2 与 AS3 的区别也在这里。如果说到更换成本,这个才是最高的。两者完全不相兼容,类库也不通用。但是,新功能和效能先不提,AS3 提供的语法结构更加标准,更接近 Java 等语言,更加静态,也就更适合来编写大型程序。单是编译期间查错和代码提示就是无法取代的决定性功能,能够增强代码的稳定性,在多人以及修改时将减少大量时间成本。但是……如果你的程序基本就是一次成型的,程序规模也很小,诸如一些简单的小游戏,AS3 的这些优势就很难发挥作用。但如果的程序规模较大,而且面临各种重用问题,继续 AS2 最后一定会后悔的。

综上所述,一个问题,在不同的情况下,就是有着不同的答案。任何一样东西在特定条件下都有它的用途,因此,谁都无法推翻或者取代谁,这就是争议背后的结论。

对于开发者

有人说,FLASH 每次更新对开发人员来说就意味着所有人退回到同一起跑线。这是对的也是错的。如果开发人员永远只做一种东西,在这里其实是错的。但开发人员实际上是根据需求跑的,既然开始大量做大型 WebGame,做的东西也越来越复杂,就已经做的不是同一个东西了。做不同的东西却始终想用同样的办法,那还能不死么?但是对于一些小游戏,乃至网站,真的有必要用和大型网游一样的方法来做么?这也许就是争论双方的矛盾所在。

但对于开发人员而言,学习新东西毕竟能增加自己的竞争力,对目前的工作没什么用,这不是不学它的理由。开发者本来就是一个相对“凄惨”的群体,偷懒,可是会死的。

真的会死的。

目前 FLASH**** 开发者类别(不包括美术路线)

  • WebGame 客户端工程师
  • FLASH 网站开发者
  • 手机游戏开发者
  • 自由游戏开发者
  • 网页应用开发者
  • 企业应用开发者
  • 课件开发者
  • 原型开发者
  • Scaleform 界面开发者

关联阅读

http://as3blog.com/as3/as3tip-new-philosophy/

http://wenwen.soso.com/z/q119628245.htm

关于作者

flashyiyi,9RIA.com 天地会元老级舵主,真名唐翎,1986 年出生,《升职记》客户端主程。目前在昆仑万维工作,之前曾在智明星通进行《开心宠物》等项目的开发。开源项目 GhostCat 作者: http://ghostcat.googlecode.com 。个人空间: http://uh.9ria.com/space-12147.html

2011 年 2 月 22 日 06:152595

评论

发布
暂无评论
发现更多内容

架构训练营 -4- 模块一作业

glenny

「架构实战营」

SAP Spartacus Session affinity

Jerry Wang

后端 28天写作 12月日更 Spartacus 会话

安全办公 |企业级IM即时通讯私有云解决方案

WorkPlus Lite

[架构实战营] 模块一作业:微信业务架构与学生管理系统

Geek_0ed632

「架构实战营」

活动预告|Feature Store Meetup

第四范式开发者社区

OpenMLDB Feature Store

把管理做简单

Ian哥

项目管理 十六个字 阿里管理箴言

万字长文--基于业务视角的上云实践

hackstoic

DevOps 运维 云原生 架构设计 签约计划第二季

【LeetCode】最短补全词Java题解

HQ数字卡

算法 LeetCode 12月日更

给弟弟的信第8封|计算机专业应该掌握的知识

大菠萝

28天写作

Flutter 自定义 ACEFoldTextView 折叠文本

阿策小和尚

28天写作 0 基础学习 Flutter 内容合集 签约计划第二季 12月日更

从0到1教你如何使用 p5.js 绘制简单的动画

海拥(haiyong.site)

大前端 动画 28天写作 签约计划第二季 12月日更

团队基建系列 - 组织知识传承 4 破局

Hillz

团队成长

钉钉宜搭亮相“第二届ISIG中国产业智能大会”:云钉低代码,构建企业酷应用

钉钉宜搭低代码

钉钉 低代码 数字化 钉钉宜搭 ISIG

Flutter 2.8 的新特性【Flutter 专题 20】

坚果

flutter 28天写作 12月日更

Redis(一):单线程为何还能这么快?

IT巅峰技术

redis 分布式 架构师 分布式缓存 Java Redis

react源码解析6.legacy模式和concurrent模式

zhang_a111

React

【Promise 源码学习】第十五篇 - 了解 generator 生成器

Brave

源码 Promise 12月日更

【架构实战营】-模块一作业

糖糖学编程

架构实战营

信息架构升级|宜搭邀你体验「沉浸式」应用搭建

钉钉宜搭低代码

钉钉 低代码 数字化 钉钉宜搭

架构实战营模块一作业

马志峰

「架构实战营」

Maven进阶(三):配置多仓库

No Silver Bullet

maven 12月日更

架构实战营 第一周作业

姬凌伟

[Pulsar] Consumer 确认消息原理

Zike Yang

Apache Pulsar 12月日更

模块一学习总结

糖糖学编程

架构实战营

面试官:你是怎样理解Fiber的

全栈潇晨

React react fiber

前端开发:npm run serve和npm run dev的区别

三掌柜

28天写作 21天挑战 12月日更

Go语言学习查缺补漏ing Day7

恒生LIGHT云社区

golang Go 语言 编程语言‘

拆分电商系统为微服务

Steven

架构实战营

DataPipeline携手云南开放大学,以实时数据融合助力高校精细化管理

DataPipeline数见科技

数据库 中间件 Big Data 数据融合 高校

聊聊程序员35岁危机

全栈潇晨

程序员 大前端 35岁危机

react源码解析3.react源码架构

zhang_a111

React react fiber

Flash务实主义(一)——Unnecessary war(不需要的战争)_Java_flashyiyi_InfoQ精选文章