2005/5/4

bitmap的問題討論

終於有人在偶的Group留言了(感謝Shock兄支持),剛好這問題時常有人問,因此特別寫成專文。

bitmap在Flash裏的問題由來以久,我把我所知的影響因素都寫出來,供大家參考看看,也歡迎各位提供更多私人偏方。

**閱讀前請先下載範例檔

1.屬性設定
請先開bitmap.swf這個檔,這原本是完全相同的兩張圖,但因為不同的壓縮設定造成不同的結果。
在bitmap圖輸進Flash後,在Library裏對它按右鍵可以設定Properties(屬性),請注意到Compression(壓縮)可以分為JPG及PNG/GIF兩種,這裏意思是不管你原來輸進來的bitmap圖是什麼格式,Flash會以這裏的設定於輸出時做不同的處理。即使你輸入的是Gif,這裏選JPG壓縮的話,Flash出來的圖也會像JPG一樣,反之亦然。
而兩種設定的差別,除了圖形表現出來的樣子不同外,輸出結果的檔案大小也會不同。

若是做Pixel風格,建議選擇PNG/GIF壓縮。

2.座標
請開bitmap2.swf
沒錯,小數點座標就會出現偏移,因為bitmap圖是一點一點組成的,當硬要把bitmap圖放在一個非整數的位置上時,Flash就會產生偏移。
那為什麼Flash要有小數點這麼無聊?因為他也有向量圖,而向量圖是不怕小數點的~
另外講到移動,如果是以ActionStript控制,我會將速度也設為整數,例如:
_x+=2; 絕不會 _x+=2.5;
至於用timeline拉tween的話…就無法控制得很精準了,除非你算好移動距離跟時間格數。

3.Quality
請比較bitmap3h.swf及bitmap3L.swf
這兩個檔裏的圖檔是一模一樣的,唯一不同是一個quality設為low,一個設為high。
有產生模糊的是high,沒有模糊的是low。

這裏有一點要注意是,quality是指Flash的播放設定,不是Publish裏的JPEG quality0到100那個設定[註]。

當quality設為high時,Flash會自動為你做柔邊效果,在處理某些圖檔時是不錯的選擇,但相對效能也會被降低,而且也不適合做pixel風格的設計。所以一般我是建議設Low。
設定方式有三種:
(1)在播放時按右鍵,選「品質」->「低」
(2)用ActionScript下 _quality="LOW";
(3)在Publish設定時,在Html裏的Quality (這是把設定寫在Html裏,所以只有框在此Html時有效)

註:JPEG quality0~100是當你有bitmap圖,且bitmap圖的輸出設定設為JPEG,而且還要勾選"use document default quality"時,才有用。

4.註冊點
請比較bitmap4R.swf及bitmap4L.swf
各位都知道,當bitmap圖轉成元件時,可以選擇註冊點所在的位置,共有九個位置可選。
而bitmap4R.swf及bitmap4L.swf兩個檔各別是設在右下及左上兩種,很明顯可以看到左上時會產生異位的情形。
這裏有一點比較有趣是,以上兩個檔案都是在_quality="LOW"的狀況下執行,但若把quality設為high時,兩個檔案的狀況就會相反了,註冊點在左上的會變正常,右下的會變不正常。
所以請視你的專案情況,決定你的註冊點,便能修正異位問題。
另一點很鮮的是,請開啟bitmap4R.fla,直接在Flash IDE環境下Ctrl+Enter預覽,會發現圖形異位,但同樣在外面以獨立播放器播bitmap4R.swf 或是以瀏覽器播bitmap4R.html時,又會是正常。而同樣的問題在bitmap4L的檔則是相反。因此IDE環境下預覽,與最後輸出結果,是有些微不同的。

以上是就我所知的一些影響因素,也歡迎各位提供更多技巧偏方。
*後續討論請到這裏

沒有留言: