我与Flash的过往——写于2021年元旦

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
转载请注明出处。

Flash对我来说是一个非常重要的软件:

Flash带我走进了编程的大门。它的ActionScript 2.0 是我学会的第一门编程语言,以至于我后来看谭浩强的C语言入门都不觉得难,还把这本书推荐给了同学。

Flash做原型很快。用Flash可以很快速地做出图形化的程序,直到现在,我都没有找到其他能如此快的制作图形化软件原型的程序或编程语言。

Flash很万能。它可以拿来做动画、做视频,做网页,做游戏。它的绘图工具用起来很方便,我甚至经常拿它制作海报图片。装上Adobe AIR SDK后它还可以直接导出安卓和iPhone程序,我的第一个安卓和iPhone程序就是用Flash做的。

正是因为Flash对我有着如此重要的意义,所以在Flash不再被支持的2021年元旦,我觉得有必要总结一下,谈谈感想,抒发一下情怀,免得后人提到Flash,只知道它是一个因为"功耗过高"而被历史淘汰的程序罢了。

那么,从头开始讲吧,这肯定是一段有趣的旅程。

---备注---

由于我对Flash的研究还不深入,所以有说的不对的请指正。

本人没赶上闪客的那个时代,所以这部分也就无从谈起。本文主要讲述的是自己的亲身经历。

本文出现的人物都为真实人物,用外号称呼,我的同学们肯定都知道是谁哈哈。

从4399到阿鲁巴入门

我是98年出生的,4399对我们这代人来说自然是再熟悉不过了,小学的电脑课,老师会直接让我们玩他提前下好的Flash游戏,虽然不允许我们联网,但我们有时也会自己带cs过去局域网联机畅玩,或是因为一不小心发现电脑里前人留下的罪恶都市而兴奋不已。

我比较喜欢的Flash游戏有《狂扁小朋友》、《黄金矿工》、《银球通关》、《森林冰火人》。当时也有个Flash搞笑视频是关于变形金刚的,做的真不错,现在4399还有。(顺带提一下我看过的那个时代的搞笑视频,个个都是经典:叫兽教你XXX,中国队勇夺世界杯残酷的高考纲领

那时候我们知道4399,知道如何打开浏览器去玩Flash游戏,但我们不知道那是Flash。

上了初中,学校电脑课,老师教Flash 8,不过也就是先通过局域网控制我们的电脑,然后按部就班地演示这节课的任务,之后我们照做就行了。这堂课不让玩游戏,而且只能做Flash,所以是有些无聊的。

但是在某一节课上,一个名为老朽的同学做出一个神奇的动画,屏幕上几个活蹦乱跳的人抬着个人,他们会跟随鼠标移动,老朽用鼠标控制他们移动去撞树,一撞到树就会如下图(重新画的,当年的文件早就找不到了),树和人一起不停抽搐,江湖人称阿鲁巴。在场的同学都哄笑起来,室内外充满了快活的空气——而这就是我的Flash入门时刻。

这之后,我学会了一句神奇的咒语 "on(press){gotoAndPlay( )}"

这句话的意思是,当按下某个物体时,就从某个帧开始播放。那怎么确定这个物体呢?在当时的ActionScript 2.0版本中,代码可以放在元件上,所以只要把这个代码放在你要点击的元件上就可以了。

这一句话,能做出一个世界。(哈哈哈哈哈哈)

比如,我的另一个好基友盖瑞做了一个“小球大冒险”,一个球在那弹来弹去,你需要在合适的时间里按下机关,让球安全通过,而这完全就是逐帧+补间动画和上面那句咒语构成的。

我之后在课上做了一个拔河游戏,完全是逐帧动画,按一下左,到前一帧,按一下后,到后一帧,除了第一帧和最后一帧,每一帧的代码都是一样的。我就和对手噼里啪啦地猛敲着键盘直到决出胜负。

再后来,初中数学课有让学生讲PPT的任务。我就用那个咒语做了一个“教授之梯形大冒险”,用来给同学讲梯形的。现场效果很好哈哈。

后来初中电脑课大作业要求做网页,我就尝试用Flash做一个马里奥的介绍页面,我做了主页、游戏页面和音乐页面,主页中,用户通过控制马里奥的移动来跳转到对应的页面,游戏页面是各种游戏的介绍,音乐界面是个马里奥的音乐播放器。主页的马里奥素材都是一帧帧截的Mario Forever的图整的(“游戏”这个界面的光标不知道有没有人看出来是从哪来的哈哈)。由于我的编程水平所限,光做这个就费了我老大劲了,而且在主页很容易发生人物陷在土里或者飘在空中的情况。最后由于工作量有点大,所以我放弃了这个东西,随便拿Frontpage做了一个别的交了上去。

初中的时候,doodle jump、水果忍者都很火,所以我初中还做了一个长得像doodle jump的玩意(当然没有发布),也是一堆bug:

无情的多面手,以及从2.0到3.0

上面的on(press){gotoAndPlay()}代码,是ActionScript 2.0代码。 而Flash cs3及之后的版本是支持ActionScript 3.0代码的[1]。那么2.0和3.0有什么区别呢?我当时只知道,3.0不能在元件上写代码,只能在帧上写代码;on(press) 没了,只能用addEventListener添加事件侦听器这种麻烦得离谱的方法来实现。所以我就一直没打算使用3.0,直到我听说Flash cs5.5及其之后的版本支持iOS开发,我才激动了起来,并且有了转到3.0的想法。

当然这里的iOS开发不是指的网页,而是货真价实地导出ipa文件,并且安装到iPhone上。

忘了是初三还是高一,我买了一本ActionScript 3.0 的入门书,一翻开我人就傻了:类是什么?!这对当时的我来说,实在是太难了。虽然我大学的时候写过一些C++的Qt的程序,但我现在仍然很讨厌类这个东西。

又是电脑课,又是大作业,只不过时间已经来到了2014年的高一下学期,这次的任务是做一个APP(的PPT)。我们组打算做一个小组合作的沟通APP,并命名为Teamwork。别的组最后的展示都是截别的软件的图或者PS做的APP界面,而我打算真的做一个能演示的界面出来。

虽然Flash能导出iPhone的安装包文件,但是需要一个秘钥,只有成为苹果的iOS开发者才能获得秘钥。上高一的时候,由于对自己的Flash技术过于自信,所以为了能开发iOS游戏,我买了一年的苹果iOS开发者资格,当时是99美元,并且只能通过VISA卡来支付,所以只能让我爸申请了个卡,然后交了这99美元。秘钥的事情自然就解决了。(不过直到一年后,我也没有往苹果的App Store上传一款软件,后来我爸就把那卡取消了,毕竟卡的年费也挺贵的)。

如何把手机的影像投到屏幕上呢,当时的生物老师有一个apple TV,把它连上投影仪,再让iPhone4s AirPlay到apple TV上就可以了。投屏几乎没有卡顿。

这一次我只能用ActionScript 3.0,对我来说是一个有点大的挑战,工作量也有点大。

最后,演示的效果很成功,电脑课拿了个A,但我那学期的生物差点没及格。我找到了当时的swf文件,效果如下图:

注意几个动画效果,这些动画效果我都觉得挺不错的哈哈:

  1. 在输入用户名和密码的时候,输入框会抖动,当输入的邮箱正确时,下方的按钮会闪光。输入界面的背景是多个会动的彩色圆。
  2. 进入群聊天框时,群名会一个字一个字蹦出来。发送文字时,文字会从输入框一个个消失,再从聊天框里一个字一个字快速蹦出来。
  3. 单击“Team”后的个人简介界面中,人的头会上下浮动。

--- 歪个楼 ---

我觉得,现在的界面,已经极简化太久了。虽然这样的界面很清晰、效率很高,但看久了难免审美疲劳。电脑是工具,但人不是。人坐在电脑前,不只是为了高效地完成任务,而且需要愉悦的使用体验。不过这里的极简化不只是说的扁平化,老早以前,windows xp系统的文件搜索里面有一条狗,office有个长得像回形针一样的助手,瑞星有个狮子,现在这些活灵活现的东西都消失了。简单来说,就是没用的东西都消失了,只留下干巴巴的信息。

Flash还是很万能的,后来,我还用Flash做过动画、海报和班服,写过数独程序、生命游戏,在数学课讲PPT时,我也用flash画过函数的图像。Flash也有简陋的3D支持,比如我这化学课整的一个苯的电子云动画:

Flash做demo做起来很快。当时有个Flappy Bird 的游戏突然就火了,我只花半个小时就做了一个并导出了apk,只不过界面非常简陋,鸟也变成了个球。同学们玩了一会儿就没有再玩了。

离开Flash以后

在大学的时候,我就很少用Flash了, 一是没有做项目的需求,另一个是Flash已经快要死了。2016年,Flash改名Animate,给它自己判了死刑。我下载了Animate,打开一看,新建文件的第一选项居然不是ActionScript 3.0文件,而是HTML5 Canvas,真的让人唏嘘不已、百感交集。

上了大学,居然隔壁班也有会Flash的人,让我很是惊喜,我们称他为陶老板。不知道是大一还是大二的时候,陶老板接了一个网页项目,他用Flash完成了那个网页,不过他用的还是ActionScript 2.0. 他说他喜欢用2.0,基本上可以胡写,3.0的束缚太多了。在外国,Flash已经从浏览器上消失了,但是中国估计还要再用一段时间。

离开Flash,我应该去用什么呢?Flash 易用,代码好写,效果直观,功能全面,已经让我产生了太多的依赖了。不过我发现,这个问题没有太大意义,因为我也不需要用Flash了。

使用Flash,对我看待其他事物产生了什么影响?

Flash的ActionScript跟JavaScript差不多,是脚本语言,让我学习其他编程语言轻松了不少。它让我的C入门变简单了,以至于看谭浩强的C语言入门都不觉得难,我还把这本书推荐给了同学。但我喜欢用C++和Python,不喜欢同为脚本的JavaScript,对其的厌倦程度跟obj-C有的一拼。

Flash的绘图方式很独特、快速,导致了我用PS的绘制方框圆圈等等时觉得这玩意难用得离谱,而且我得切换到对应图层才能拖动那个物体?!Ai我尝试用过几小时,但不太习惯。

Flash做界面就跟做PPT一样简单,而且这完全是你自己的世界,每个按钮想整啥样就啥样,想怎么动就怎么动。所以Flash做出来的游戏,UI基本不会是方方正正的按钮。但是现在的游戏……我真的想吐槽一下,现在好多3D游戏的UI界面都只不过是一些方方正正的按钮和图片,会在你按下去的时候变个颜色,美其名曰扁平化。任天堂的UI美术和按下去的声音反馈都是很不错的,他们的游戏里都是如此,但我搞不明白switch的主界面为什么是那样?!还有PUBG,用的就是UE4的默认UI,简陋的离谱,PUBG出了都快3年了UI还是那鸟样。为了赶时髦把操作系统的一套“扁平化”UI用到游戏里,大可不必,操作系统是工具,游戏不是,2D的UI也不是3D游戏的附属品。

一些其他的体会

这里说的东西,跟Flash本身没有太大关系了。

随着人的年龄的增加,理解能力确实会不断地提高。我在高二的时候,尝试用了一下Qt,但里面的那个槽函数死活都看不懂,也不会用,到了大三的时候居然自然地就看懂了。

如何要用代码实现一个2D平台跳跃游戏的逻辑,还是要看资料,不要以为简单就自己瞎琢磨,其实这玩意有点复杂的。你首先可能会经历卡地板,然后是卡墙、卡天花板,然后是直接穿过地面,然后是卡地面的边缘。解决完bug后可能要添加功能:蹲、爬墙、踢墙跳、Dash,添加功能后又要修bug。功能都全了还要优化,比如平地移动速度和下落速度限制、根据按跳的时间确定跳的高度等跳跃手感问题。它毕竟是游戏,实现功能和无bug都只是基本要求,手感舒服才能完美,而这是要不断地测试或者有足够的技术积累(@动作天尊卡普空)形成的。

License

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
转载请注明出处。

参考资料


  1. https://baike.baidu.com/item/Flash/33054 ↩︎

posted @ 2021-01-04 17:15  mariocanfly  阅读(247)  评论(0编辑  收藏  举报