作者sextitanic (阿信163)
看板WindowsPhone
标题Re: [问题] flash一问
时间Wed Apr 4 04:21:06 2012
其实 Flash 要说它比较耗资源的确是没有错
不过可以从它本身层面跟开发者(含设计)的角度来探讨
首先把图形粗分为点阵图跟向量图
点阵图就是一张图,若浏览器检视比例放大缩小会失真(此失真非指因压缩而导致)
而向量图则是记录锚点,开启後再由cpu运算并不断重绘,不失真
点阵图的缺点是比较耗容量,读取比较久
(同样一个单纯黑色圆形,png可能要5k,而flash画的swf可能1k不到)
优点是点阵图比较不耗 cpu 运算(当然如果图片很大又快速切换的时候cpu也会飙)
向量图的话优点是容量小
但是缺点是需用cpu计算
那在开发上会有什麽问题呢?
假设按了键盘左右键会播放一个人物跑步的动画
然後那个人物虽然在画面上只会占大概宽30px高70px,但设计却用了2000个锚点
在 HTML5 + Javascript 的情况下
没有差,因为会把人物每个动作制成图片弄成图表(SpriteSheet)
再用程式指定按下右键後,以0.1秒的速度从图表第 1 张 ~ 第 3 张在canvas重复播放
在 Flash 上
则是改成变换影格,并且由cpu不断去针对那2000个锚点不断的做运算和重绘
而程式方面(下面以AS3来说)
今天你把一个物件 new 到场景上
并且给它事件侦听,但当你把它 removeChild 掉,事件还会留着
更不用说有时候用了 ENTER_FRAME(会依据设定的FPS来做侦测)
假设 fps 设定 24,则 1 秒钟会侦测 24 次,设定 60 则是 1 秒侦测 60 次
而最恐怖的原罪来了,flash 做些小东西其实真的还挺方便的
但方便相对也就代表容易让更多人来开发,但开发者的心态和专业度你永远不知
一、习惯不良
像上面说的,因为人物很小,其实设计上不用到细节非常的多
甚至可能不到100个锚点就能解决,但却在 Illustrator 把人放超大在画
结果超爆走
或是有些人写 flash 程式,会指定监听,却不会把它移除
不断累积不断累积下来影响深远
flash场景可能才 1000*620,要汇一张图进来当背景
结果却汇了一张 3xxx * 2xxx 的图,没有事先缩成实际需要使用的大小
然後到 flash 里面才缩,这个非常恐怖
就算是用 jQery 套一个轮播的套件
可是却轮播 3xxx * 2xxx 的图,用css硬缩大小
非常痛非常痛
二、自我要求度不足
除了程式逻辑上的不足外,对於程式语言也不够了解
同样都是阵列,Array 跟 Vector 使用上有什麽不同
不预设阵列大小会不会造成效能影响,影响多少
内建的排序效能跟自己写的效能哪个好
按钮、影片片段、图像元件差别在哪,什麽时候用哪个比较恰当
三、懒得学习新知
当你今天画了游戏用场景或网页背景之类
其实大部份没什麽在动,flash 後来有一个叫作「快取成点阵图」的功能
可以把那部份设定成点阵图显示,以避免cpu不断运算
但是有些人旧版用习惯了,改成新版也不会去了解新版有什麽好玩意
依旧一招走天下
四、方便啊方便
一些滤镜特效能够方便使用,参数调一调就好
而滤镜是会吃效能的
一般在做网页的时候,要嘛是调用css或是图片切换展现一些效果
如果用javascript是程式设计师让按钮飞来飞去变来变去
效能端看程式设计师的能力
但是在flash里,设计也可以一展长才
这时候就要看设计是不是也具有对flash动画的体认和了解做出更不耗效能的动画
要注意程式跟设计两方面的能力,危险度加倍
五、唉呀,反正我电脑跑得顺就好了嘛
这一点最严重,有这一点的人上面4点就全包了
尤其应该有很多大大身边有人接触过 flash
会觉得像乐高一样随便叠一叠就会有东西出来
不会去考虑要怎麽样可以更顺畅更漂亮
当别人问:「怎麽这麽 lag」的时候,就会回「啊就 flash 啊没办法」
完全没想过可能自己本身也有问题
就像有些人会说「VB 执行速度比 C 慢啦~」
有人听了之後用 VB 写了个踩地雷之後,发现把周遭没有炸弹的格子开启速度很慢
用肉眼都看的出来是慢慢跑,於是就说「果然VB很慢啊」一样的道理
总结:
若都是很厉害的开发者,Flash绝对会比HTML5耗资源,因为它是向量的
就算都在里面改成用点阵图呈现,但中间多了一层 player,势必会多花一点效能
但之後若许多人投入HTML5之中,树多必有枯枝,人多必有??
有可能也会像现在 flash 的囧境一般
以下放上两个 HTML5 的连结:
多方块旋转:
http://voxelrain.appspot.com/
游戏:
http://people.opera.com/emoller/gremlins/
HTML5 的发展,一方面也要看往後各浏览器对 Javascript 和 CSS3 的支援度
以及开发上的一致性
不过手机上有没有flash我倒觉得还好
平板的话还是希望能有 flash,比较不用担心会有纯 flash 网站看不到QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.94.82
1F:推 felaray:推一个 补个HTML5的网站 04/04 10:40
3F:→ felaray:另外其实美工和程式开发常常是不同人负责的 很难一个人同 04/04 10:41
4F:→ felaray:时负责两件事情 也会造成效能上的问题XD 美工可能觉得怎样 04/04 10:42
5F:→ felaray:最好看 只要求程式设计师做出他想要的东西~却忽略了程式 04/04 10:43
6F:→ felaray:设计师所需的相关概念~ 04/04 10:43
7F:推 icarus0508:试看看flash builder 它本身就有记忆体没放好 不光只有 04/04 12:27
8F:→ icarus0508:向量图点阵图之别 另外现今flash 已提供gpu加速 但仍 04/04 12:27
9F:→ icarus0508:然有慢 flash 很多东西特别是释放很有问题 innerfunc 04/04 12:27
10F:→ icarus0508:ion就罡一例 04/04 12:27
11F:推 icarus0508:而且大形程式 很多时候就卡在资源 它有很多资源照adobe 04/04 12:35
12F:→ icarus0508:给的写法都会不放了 这在开发者论坛不算少见的问题 有 04/04 12:35
13F:→ icarus0508:时候程式功力再高 c\c++出生都不见得救得回 04/04 12:35
14F:推 icarus0508:相比之下 向量点阵的问题算很小 特别是用flash 写游戏 04/04 12:38
15F:→ icarus0508:的公司来说基本了 04/04 12:38
16F:推 icarus0508:另外vb的确比c慢多了 要写很大形程式 就会非常明显 04/04 12:48
17F:→ icarus0508:大形游戏都是用c++写不是没有理由的 04/04 12:48
18F:→ icarus0508:顺便一说 flash写3d下 不会有人用向量图 因为没意义 04/04 12:49
19F:→ icarus0508:3d本身就极耗资源了… 04/04 12:49
20F:→ icarus0508:还有一点 多数精细图 人肉眼都看得出是不是向量了… 04/04 12:52
21F:→ icarus0508:有一阵子paper是很多把点阵图转向量图 不过实用上 除非 04/04 12:53
22F:→ icarus0508:是为了其他运算 不然真的不太实用 … 04/04 12:54
23F:推 sa074463:长知识推!! 04/04 13:06
24F:推 felaray:点阵转向量真的是有和没有一样XD 04/04 16:50