Pay for Hesitation: Filter

Pages

2008年4月2日 星期三

Filter

先來看個as3支援的filter特效吧!!
http://sakri.net/technology/flash/flex/convolution_filter/ConvolutionFilterExplorer.html


每個displayObject都有filter property, 型態是Array, 預設值是null.

所以要對displayObject使用filter,
就需asign一個塞著filter的Array給它的filter屬性.
如:


比較簡易的寫法,如下:


還有更簡潔的方式:


以上的方法, 是直接覆蓋掉原本sprite的filter array.
若是想要append新的filter至原本的filter array的話,
千萬不可以寫成下面這行:
mySprite.filters.push(blur);
因為flash並沒有監聽filter array, 所以array的內容有所變動時, 並不會觸發flash去執行它.

只有在filter array被assign時, flash才會重新執行array中的filter.
所以正確append filter array的方法如下:


也可以寫成



BlurFilter的prototype.
public function BlurFilter(blurX:Number = 4.0, blurY:Number = 4.0, quality:int = 1)
第三個參數是blur的次數.
也可以用BitmapFilterQuality來設置.
但是此參數較耗render資源,所以䀆量以設置前兩個參數來達到需要的blur強度.


demo: http://imlab.cs.nccu.edu.tw/~pie/Filter.swf

沒有留言: