实验五 光的三原色原理课件的制作AS3
上机实验须知
实验五
实验名称:
光的三原色原理课件的制作
实验目的:
1)掌握Flash的显示对象层级结构
2)掌握自定义变量,自定义函数的方法。
3)掌握Flash对象之间的属性、函数的调用方法
4)掌握将各种元件的综合使用技巧
5)在以上知识和技能的基础上,完成一个光的三原色合成原理课件,有三个滑动控制器,移动控制器的滑块,可以
给显示区设置一个红色圆形区域,一个蓝色圆形区域和一
个绿色圆形区域,这三个区域两两叠加,叠加的部分采用
光的合成原理进行。效果如“光的三原色课件.swf”所示。实验原理:
建立剪辑的颜色对象,然后通过三个控制器的移动获得颜色三个通道的值,将这个颜色值赋值给剪辑的颜色对象就可以改变剪辑的颜色。
实验环境:
1)高档微机
2)WindowsXP中文版或者Windows2000
3)Flash CS3中文版
实验步骤和内容:
1)打开Flash程序,新建一个Flash文件,大小为400×225。2)先完成课件界面的基本布局。
3)建立三个没有填充的圆形线框,让这三个线框两两相交,给每个交叉的区域填上不同的颜色,并各自转化为元件,类型为电影剪辑。给每个剪辑设置一个实例名称。分别为r,g,b,rg,rb,gb,rgb。
4)设计颜色控制器的界面效果,颜色控制器是一个影片剪辑,其中包含一个滑块,一个文字显示框和必要的辅助背景。文字
框类型为动态文本,名称为txtColorValue。滑块是一个电影剪辑,实例名称为brick。
第一帧的脚本如下:
var colorValue:Number;
var rMulti=0,gMulti=0,bMulti=0;
brick.addEventListener(MouseEvent.MOUSE_DOWN,dragBrick); brick.addEventListener(MouseEvent.MOUSE_UP,dropBrick); this.addEventListener(Event.ENTER_FRAME,setColor);
function dragBrick(e:MouseEvent){
var rec:Rectangle=new Rectangle(0,-128,0,128);
brick.startDrag(false,rec);
}
function dropBrick(e:MouseEvent){
brick.stopDrag();
}
function setColor(e:Event){
colorValue=int(brick.y*(-255/200));
if(colorValue==256){
colorValue=255;
}
txtColorValue.text=String(colorValue);
var color:ColorTransform=new ColorTransform(0,0,0,1,colorValue*rMulti,colorValue*gMulti,colorV alue*bMulti,0);
colorBar.transform.colorTransform=color;
}
做好后复制控制器,并列三个控制器。这三个控制器的实例名称分别设定为:rControl,gControl,bControl.
5)现在进入程序编程阶段。
第一帧的脚本如下:
this.addEventListener(Event.ENTER_FRAME,freshColor); function freshColor(e:Event){
rControl.rMulti=1;
gControl.gMulti=1;
bControl.bMulti=1;
var rCol,gCol,bCol;
rCol=rControl.colorValue;
gCol=gControl.colorValue;
bCol=bControl.colorValue;
r.transform.colorTransform=new ColorTransform(0,0,0,1,rCol,0,0,0);
g.transform.colorTransform=new ColorTransform(0,0,0,1,0,gCol,0,0);
b.transform.colorTransform=new ColorTransform(0,0,0,1,0,0,bCol,0);
rg.transform.colorTransform=new ColorTransform(0,0,0,1,rCol,gCol,0,0);
rb.transform.colorTransform=new ColorTransform(0,0,0,1,rCol,0,bCol,0);
gb.transform.colorTransform=new ColorTransform(0,0,0,1,0,gCol,bCol,0);
rgb.transform.colorTransform=new ColorTransform(0,0,0,1,rCol,gCol,bCol,0); }
6)每个滑块内部的第一帧设置如下的脚本:
var colorValue:Number;
var rMulti=0,gMulti=0,bMulti=0;
brick.addEventListener(MouseEvent.MOUSE_DOWN,dragBrick); brick.addEventListener(MouseEvent.MOUSE_UP,dropBrick);
this.addEventListener(Event.ENTER_FRAME,setColor);
function dragBrick(e:MouseEvent){
var rec:Rectangle=new Rectangle(0,-128,0,128);
brick.startDrag(false,rec);
}
function dropBrick(e:MouseEvent){
brick.stopDrag();
}
function setColor(e:Event){
colorValue=-brick.y*2;
if(colorValue==256){
colorValue=255;
}
txtColorValue.text=String(colorValue);
var color:ColorTransform=new ColorTransform (0, 0,0,1,colorValue*rMulti, colorValue *gMulti ,colorValue*bMulti,0);
colorBar.transform.colorTransform=color;
}
7)测试影片,调试程序,直到得到正确效果为止。