分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
其實這個倒影類已經不是新鮮的事情,不過有時候很多情況不適合自己做特效,所以拿了乙個修改一下。因為我們載入的,在預設的情況下使用容器裝都在註冊點都在左上角,但是大部分情況,我們註冊點在中心或者底部會符合我們做特效的特點。於是根據這些情況進行倒影判斷有時候有必要的。
所以修改了乙個倒影類。
倒影的其中乙個特點:使用漸變填充的辦法(begingradientfill)構建這個倒影效果。當中使用到一些矩陣,一些遮罩,一些位圖複製的做法。雖然遮罩這種做法已經有很多情況適應,不過漸變填充是一項比較消耗資源的計算,因此倒影類有時候會出現吃資源的狀況,這一點需要注意。 同時注意到(cacheasbitmap這個玩意使用的時候也是比較消耗記憶體的)
還有第二種方式:使用位圖做法,先實驗倒影,然後再複製成一張位圖。這種可以算是非主流的做法。不知道好不好玩呢,有空再去嘗試一下製作。
還可以實驗其他方式優化,有空可以嘗試一下製作。
漸變填充:
reflectionmask.graphics.begingradientfill(filltype, colors, alphas, ratios, matr, spreadmethod);
使用漸變填充的時候,需要填入幾個引數才會有效果發生。因為這個幾個引數模式在官方幫助文件有充分的說明,可以參考這個
在使用漸變填充的時候,其中矩陣的使用是個比較好玩的地方,使用矩陣可以改變填充的方向,如果有更多的需求的時候,可以對矩陣這個引數進行研究一番。
在平時的時候,我們建立乙個元件的時候,flash會提供乙個對齊方式給我們選擇,預設的情況是在左上角,但是有時候我們需要改變這種對齊方式選擇中心點位置 或者其他,這樣一來會方便我們製作特效的。在實驗的過程當中,我發現很多牆效果所需要都在中心位置。故此在使用倒影類的時候,可以恰當根據這幾種情況定製我們所需要的方式。
如:左上角位置:
中心:中心點下面:
所以這樣一來,倒影位置就可能出現多種情況。所以根據這些選擇來改變倒影的的位置。有時候會適合自己的方式製作。
[c-sharp]view plain
copy
print?
package org.summertree.effect
//建立倒影
private function creatreflection():void
else
if(regpointtype==reflection.center)
else
if(regpointtype==reflection.center_bottom)
var filltype:string = gradienttype.linear;
var colors:array = [0xffffff,0xffffff];
var alphas:array = [reflectionalphastrength,0];
var ratios:array = [0,reflectionheight];
var matr:matrix = new matrix();
var matrixheight:number;
if(reflectionpercent<=0)
else
var spreadmethod:string = spreadmethod.pad;
matr.creategradientbox(reflectioncontainer.width ,matrixheight, 0.5*math.pi,0, 0);
reflectionmask.graphics.begingradientfill(filltype, colors, alphas, ratios, matr, spreadmethod);
reflectionmask.graphics.drawrect(0, 0, reflectioncontainer.width, reflectioncontainer.height);
reflectionmask.graphics.endfill();
reflectionbmp.cacheasbitmap = true;
reflectionmask.cacheasbitmap = true;
reflectionbmp.mask = reflectionmask;
} //新增專案
private function additem():void
//清除倒影
public function clearall():void
} }
package org.summertree.effect //建立倒影 private function creatreflection():void else if(regpointtype==reflection.center) else if(regpointtype==reflection.center_bottom) var filltype:string = gradienttype.linear; var colors:array = [0xffffff,0xffffff]; var alphas:array = [reflectionalphastrength,0]; var ratios:array = [0,reflectionheight]; var matr:matrix = new matrix(); var matrixheight:number; if(reflectionpercent<=0) else var spreadmethod:string = spreadmethod.pad; matr.creategradientbox(reflectioncontainer.width ,matrixheight, 0.5*math.pi,0, 0); reflectionmask.graphics.begingradientfill(filltype, colors, alphas, ratios, matr, spreadmethod); reflectionmask.graphics.drawrect(0, 0, reflectioncontainer.width, reflectioncontainer.height); reflectionmask.graphics.endfill(); reflectionbmp.cacheasbitmap = true; reflectionmask.cacheasbitmap = true; reflectionbmp.mask = reflectionmask; } //新增專案 private function additem():void //清除倒影 public function clearall():void }}
測試:根據不同的註冊點建立。
[c-sharp]view plain
copy
print?
var rect2:reflection=new reflection(mc1,255,reflection.left_top,0.5);
var rect:reflection=new reflection(mc2,255,reflection.center,0.6,0.5);
var rect3:reflection=new reflection(mc3,255,reflection.center_bottom,0.6,0.6);
var rect2:reflection=new reflection(mc1,255,reflection.left_top,0.5); var rect:reflection=new reflection(mc2,255,reflection.center,0.6,0.5); var rect3:reflection=new reflection(mc3,255,reflection.center_bottom,0.6,0.6);
給我老師的人工智慧教程打call!
flash特效原理 螺旋效果 (2)
經過上面的測試,現在對原先程式進行一些改造可以建立出不錯的效果,你會發現每次改動一些引數很多有趣的效果就會出現了。現在我們嘗試做乙個調節工具對他們的半徑,高度,圈數,視角進行創造。這次會主要借助到flash裡面 元件包。slider 元件來幫助我們完成這一次的嘗試。製作過程知道 包括slider 元...
flash特效原理 螺旋效果 (3)
最近對高數起了很大的興趣,掏錢買了一本高等數學。發現裡面的真是乙份寶物,最近看了乙個人的部落格。關於高等數學的知識,對螺旋線的形態原來不僅僅是一種。過去嘗試製作的圖形也是一種的方式,現在提及這種螺旋線不是圍繞著圓柱形狀旋轉,而是圓錐。對無錯,圓錐體。又是讓人覺得不爽的數學,不過細心發覺,這種形態看起...
flash特效原理 螺旋效果 (3)
分享一下我老師大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!最近對高數起了很大的興趣,掏錢買了一本高等數學。發現裡面的真是乙份寶物,最近看了乙個人的部落格。關於高等數學的知識,對螺旋線的形態原來不僅僅是一種。過去嘗試製作的圖形也是一種的方式,現在提...