下面是小编精心整理的Flash教程:FlashAS实现颜色渐变光线旋转特效(共含5篇),希望能够帮助到大家。同时,但愿您也能像本文投稿人“南风”一样,积极向本站投稿分享好文章。
代码如下:
var pMaxSize:Number = 150;
var pCenterX:Number = 275;
var pCenterY:Number = 200;
var pNumTraces:Number = 20;
var pNumLayers:Number = 30;
var pCurrentLayer:Number = 0;
var pLineColour:Number;
var pPointDegree:Array = new Array;
var pPointDegreeChange:Array = new Array();
var pPointScale:Array = new Array();
var pPointScaleChange:Array = new Array();
var pPointX:Array = new Array();
var pPointY:Array = new Array();
var pBaseTimeline:MovieClip;
var pIntervalId:Number;
function init(baseTimeline:MovieClip):Void {
pBaseTimeline = baseTimeline;
pBaseTimeline.createEmptyMovieClip(“holder”, 0);
for (var j:Number = 0; j
pBaseTimeline.createEmptyMovieClip(“layer”+j, j+1);
pBaseTimeline[“layer”+j]._x = pCenterX;
pBaseTimeline[“layer”+j]._y = pCenterY;
}
initTraces();
pBaseTimeline.holder.onEnterFrame. = function() {
moveSpheres();
};
pIntervalId = setInterval(this, “updateSeeds”, );
}
function initTraces() {
for (var i:Number = 0; i
pPointX = 0;
pPointY = 0;
pPointDegree = (6.28318530718/pNumTraces)*i;
pPointScale = 50;
}
updateSeeds();
for (i=0; i
plotLine(i);
}
}
function moveSpheres() {
for (var i:Number = 0; i
pPointDegree += pPointDegreeChange;
pPointScale += pPointScaleChange;
plotLine(i, true);
}
pBaseTimeline[“layer”+pCurrentLayer]._alpha = 100;
pCurrentLayer = (pCurrentLayer+1)%pNumLayers;
for (var j:Number = 0; j
pBaseTimeline[“layer”+((pCurrentLayer+j)%pNumLayers)]._alpha = (j/pNumLayers)*100;
}
pBaseTimeline[“layer”+pCurrentLayer].clear();
}
function plotLine(i:Number, drawLine:Boolean) {
pBaseTimeline[“layer”+pCurrentLayer].lineStyle(1, pLineColour, 100);
pBaseTimeline[“layer”+pCurrentLayer].moveTo(pPointX, pPointY);
pPointX = (Math.cos(pPointDegree)*pPointScale);
pPointY = (Math.sin(pPointDegree)*pPointScale);
if (drawLine == true) {
pBaseTimeline[“layer”+pCurrentLayer].lineTo(pPointX, pPointY);
}
}
function updateSeeds() {
var deg:Number;
var scale:Number;
deg = randomRange(-100, 100)/2000;
if (pPointScale[0]>pMaxSize) {
scale = randomRange(-10, 0)/2;
} else if (pPointScale[0]<-pMaxSize) {
scale = randomRange(0, 10)/2;
} else {
scale = randomRange(-10, 10)/2;
}
for (var i:Number = 0; i
pPointDegreeChange = deg;
pPointScaleChange = scale;
}
pLineColour = randomRange(0, 0xFFFFFF);
}
function randomRange(min:Number, max:Number):Number {
var randomNum:Number = Math.round(Math.random()*(max-min))+min;
return randomNum;
}
init(this);
先来看下效果:
代码详解:
[SWF(backgroundColor=0x000000,width=550,height=400)]//设置场景背景色、大小
var r:uint=0,g:uint=0,b:uint=0;//声明无符号整数型变量r、g、b,初始值都是0
var color:uint,targetR:uint,targetG:uint,targetB:uint;//声明无符号整数型变量color、targetR、targetG、targetB
var filtersCo:uint,filtersR:uint,filtersG:uint,filtersB:uint;//声明无符号整数型变量filtersCo、filtersR、filtersG、filtersB
var glowF:GlowFilter;//声明一个发光滤镜类实例glowF
var matrix:Matrix=new Matrix();//声明一个矩阵类实例matrix
matrix.createGradientBox(550,200,0,0,0);//设置矢量图渐变填充所需矩阵样式(宽550,高200,旋转0,X方向平移0,Y方向平移0)
var sh:Shape=new Shape();//声明一个矢量图类实例sh
sh.graphics.beginGradientFill(GradientType.LINEAR, [0xff0000,0xffff00,0x00ff00,0x00ffff,0x0000ff,0xff00ff,0xff0000], [1,1,1,1,1,1,1],[0,42,84,126,168,210,255],matrix);//设置渐变填充样式(线性渐变,颜色块颜色,透明度,颜色块位置,矩阵)
sh.graphics.drawRect(0,0,550,200);//在sh中画矩形(左上角坐标(0,0),宽550,高200)
sh.graphics.endFill();//结束填充
var bmd:BitmapData=new BitmapData(550,200);//声明一个位图数据类实例bmd(宽550,高200)
var bim:Bitmap=new Bitmap(bmd);//声明一个位图包装类实例bim,用于包装bmd
bmd.draw(sh);//位图bmd为矢量图sh拍照
addChild(bim);//把位图bim添加显示列表
var txt:TextField=new TextField();//声明一个文本类实例txt
addChild(txt);//把文本txt添加显示列表
txt.defaultTextFormat=new TextFormat(“华文琥珀”,60);//设置文本格式(字体,字号)注意这样设置要放在内容前面才起作用
txt.autoSize=TextFieldAutoSize.CENTER;//文本txt自动调整大小并居中对齐
txt.x=stage.stageWidth/2-txt.width/2;//文本的X坐标,把文本放在舞台中间
txt.y=stage.stageHeight*3/4-txt.height/2;//文本的Y坐标,把文本放在纵向3/4处
addEventListener(Event.ENTER_FRAME,frame);//添加帧频事件侦听,调用函数frame
function frame(e) {//定义帧频事件函数frame
color=bmd.getPixel(mouseX,mouseY);//color获取位图鼠标处像素点的颜色
targetR=color>>16;//targetR获取color中红色通道数值
targetG=color>>8&0xff;//targetG获取color中绿色通道数值
targetB=color&0xff;//targetB获取color中蓝色通道数值
r+=uint((targetR-r)*0.03);//r每帧增加targetR与r差的0.03倍
g+=uint((targetG-g)*0.03);//g每帧增加targetG与g差的0.03倍
b+=uint((targetB-b)*0.03);//b每帧增加targetB与b差的0.03倍
txt.textColor=r<<16|g<<8|b;//把r、g、b合成颜色付值给文字txt
filtersR=0xff-r;//filtersR获取0xff与r的差
filtersG=0xff-g;//filtersG获取0xff与g的差
filtersB=0xff-b;//filtersB获取0xff与b的差
filtersCo=filtersR<<16|filtersG<<8|filtersB;//把filtersR、filtersG、filtersB合成颜色付值给filtersCo
glowF=new GlowFilter(filtersCo,1,8,8);//发光滤镜glowF实例化(颜色,透明度,X方向模糊值,Y方向模糊值)
txt.filters=[glowF];//文字应用发光滤镜
}
//============说明
var txt1:TextField=new TextField();//声明一个文本类实例txt
addChildAt(txt1,numChildren-1);//把txt添加到显示列表的最底层
txt1.defaultTextFormat=new TextFormat(“华文隶书”,20,0x00cc33);//为txt设置文本格式(隶书,30号,深绿色)
txt1.text=“全脚本文字颜色缓动效果 鼠标滑动七彩图改变文字颜色”;//文本txt内容
txt1.x=20;//文本txt的X坐标获取20
txt1.y=360;//文本txt的Y坐标获取360
txt1.width=550;//文本txt的宽度获取220
txt1.filters=[new DropShadowFilter(2,45,0x0)];//为文本添加投影滤镜(距离5,方向45度,颜色黑色)
渐变
先看看效果了:点击这里下载源文件
AS代码:
for (n=0; n<=200; n++) {
attachMovie(“ball”, “ball”+n, n);
this[“ball”+n]._x = 100+n;
y = Math.sin(n*Math.PI/100)*50+150;
this[“ball”+n]._y = y;
myclor = new Color(this[“ball”+n]);
myclor.setRGB(255 << 16 | Math.floor(255*(y-100)/100) << 8 | 0);
}
步骤:
1、插入一movieclip,命名为ball,
Flash制作颜色渐变效果
,
在MC中用椭圆工具画一个正圆。
2、在库中,右键选择链接,使MC的标志符为ball。
3、在场景中的第一桢中加入如上的AS。
原理就是通过改变y轴坐标来改变RGB中的G的成分。当然也可以改变其他成分。
代码详解:
[SWF(backgroundColor=0x000000,width=550,height=400)]//设置场景背景色、大小
var r:uint=0,g:uint=0,b:uint=0;//声明无符号整数型变量r、g、b,初始值都是0
var color:uint,targetR:uint,targetG:uint,targetB:uint;//声明无符号整数型变量color、targetR、targetG、targetB
var filtersCo:uint,filtersR:uint,filtersG:uint,filtersB:uint;//声明无符号整数型变量filtersCo、filtersR、filtersG、filtersB
var glowF:GlowFilter;//声明一个发光滤镜类实例glowF
var matrix:Matrix=new Matrix;//声明一个矩阵类实例matrix
matrix.createGradientBox(550,200,0,0,0);//设置矢量图渐变填充所需矩阵样式(宽550,高200,旋转0,X方向平移0,Y方向平移0)
var sh:Shape=new Shape();//声明一个矢量图类实例sh
sh.graphics.beginGradientFill(GradientType.LINEAR,[0xff0000,0xffff00,0x00ff00,0x00ffff,0x0000ff,0xff00ff,0xff0000],[1,1,1,1,1,1,1],[0,42,84,126,168,210,255],matrix);//设置渐变填充样式(线性渐变,颜色块颜色,透明度,颜色块位置,矩阵)
sh.graphics.drawRect(0,0,550,200);//在sh中画矩形(左上角坐标(0,0),宽550,高200)
sh.graphics.endFill();//结束填充
var bmd:BitmapData=new BitmapData(550,200);//声明一个位图数据类实例bmd(宽550,高200)
var bim:Bitmap=new Bitmap(bmd);//声明一个位图包装类实例bim,用于包装bmd
bmd.draw(sh);//位图bmd为矢量图sh拍照
addChild(bim);//把位图bim添加显示列表
var txt:TextField=new TextField();//声明一个文本类实例txt
addChild(txt);//把文本txt添加显示列表
txt.defaultTextFormat=new TextFormat(“华文琥珀”,60);//设置文本格式(字体,字号)注意这样设置要放在内容前面才起作用
txt.text=“多特软件站欢迎您!”;//文本内容
txt.autoSize=TextFieldAutoSize.CENTER;//文本txt自动调整大小并居中对齐
txt.x=stage.stageWidth/2-txt.width/2;//文本的X坐标,把文本放在舞台中间
txt.y=stage.stageHeight*3/4-txt.height/2;//文本的Y坐标,把文本放在纵向3/4处
addEventListener(Event.ENTER_FRAME,frame);//添加帧频事件侦听,调用函数frame
function frame(e) {//定义帧频事件函数frame
color=bmd.getPixel(mouseX,mouseY);//color获取位图鼠标处像素点的颜色
targetR=color>>16;//targetR获取color中红色通道数值
targetG=color>>8&0xff;//targetG获取color中绿色通道数值
targetB=color&0xff;//targetB获取color中蓝色通道数值
r+=uint((targetR-r)*0.03);//r每帧增加targetR与r差的0.03倍
g+=uint((targetG-g)*0.03);//g每帧增加targetG与g差的0.03倍
b+=uint((targetB-b)*0.03);//b每帧增加targetB与b差的0.03倍
txt.textColor=r<<16|g<<8|b;//把r、g、b合成颜色付值给文字txt
filtersR=0xff-r;//filtersR获取0xff与r的差
filtersG=0xff-g;//filtersG获取0xff与g的差
filtersB=0xff-b;//filtersB获取0xff与b的差
filtersCo=filtersR<<16|filtersG<<8|filtersB;//把filtersR、filtersG、filtersB合成颜色付值给filtersCo
glowF=new GlowFilter(filtersCo,1,8,8);//发光滤镜glowF实例化(颜色,透明度,X方向模糊值,Y方向模糊值)
txt.filters=[glowF];//文字应用发光滤镜
}
//============说明
var txt1:TextField=new TextField();//声明一个文本类实例txt
addChildAt(txt1,numChildren-1);//把txt添加到显示列表的最底层
txt1.defaultTextFormat=new TextFormat(“华文隶书”,20,0x00cc33);//为txt设置文本格式(隶书,30号,深绿色)
txt1.text=“全脚本文字颜色缓动效果 鼠标滑动七彩图改变文字颜色”;//文本txt内容
txt1.x=20;//文本txt的X坐标获取20
txt1.y=360;//文本txt的Y坐标获取360
txt1.width=550;//文本txt的宽度获取220
txt1.filters=[new DropShadowFilter(2,45,0x0)];//为文本添加投影滤镜(距离5,方向45度,颜色黑色)
特效|旋转
可以控制立方体的旋转:
cubeCenter = new point3d(0,0,0);
geom.addCube(cubeCenter, 80, 0xFFF2CC);
geom.addCube(cubeCenter, 20, 0xFFF2CC);
geom.addSolidCube(cubeCenter, 20, 0xC2B898, 30);
point1 = new point3d(-80,80,80);
point2 = new point3d(-80,80,-80);
point3 = new point3d(80,80,-80);
point4 = new point3d(80,80,80);
point5 = new point3d(-80,-80,80);
point6 = new point3d(-80,-80,-80);
point7 = new point3d(80,-80,-80);
point0 = new point3d(80,-80,80);
// attach a movie from the library and then add it
for (g=0; g<8; g++) {
attachMovie(“glowball”, “gb”+g, depth++);
mx3dInstance.addClip(eval(“point”+g), eval(“gb”+g));
}
源文件下载:点击这里下载源文件