flash特效原理 倒影效果

2021-08-31 07:29:31 字數 4055 閱讀 5102

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

其實這個倒影類已經不是新鮮的事情,不過有時候很多情況不適合自己做特效,所以拿了乙個修改一下。因為我們載入的,在預設的情況下使用容器裝都在註冊點都在左上角,但是大部分情況,我們註冊點在中心或者底部會符合我們做特效的特點。於是根據這些情況進行倒影判斷有時候有必要的。

所以修改了乙個倒影類。

倒影的其中乙個特點:使用漸變填充的辦法(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)

分享一下我老師大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!最近對高數起了很大的興趣,掏錢買了一本高等數學。發現裡面的真是乙份寶物,最近看了乙個人的部落格。關於高等數學的知識,對螺旋線的形態原來不僅僅是一種。過去嘗試製作的圖形也是一種的方式,現在提...