Flash制作关于光的折射和全反射规律的动画教程

2019-10-08 11:44:45丽君

  1、选中文本工具,此时的文本工具默认下是静态文本的,点击场景中的右上角,在点击处出现一个文本框、在其中输入“入射角”三字

  2、同样选择文本工具,选择场景下方的属性对话框,点击文本类型下拉菜单,会出现三选项,静态文本、动态文本、输入文本,这里选择动态文本,用来动态显示入射角得数值,在上一步的文本“入射角”后按住左键拉出一个文本框,选中文本框,选择下方的属性,在变量处命名rsj(入射角)如图

Flash制作关于光的折射和全反射教程

  最后在动态文本后用静态文本输入单位“度”,基本作法就如此,,之后依次完成折射角(zsj)、反射角(fsj)、临界角(ljj)的显示文本的制作,效果如图

Flash制作关于光的折射和全反射教程

  三、动画的实现

  1、理论分析

  这部分主要是脚本了,我们先熟悉一些折射定律吧,高中物理告诉我们,当一束光线从光密介质到光疏介质(如从水或玻璃进入空气),有可能发生全反射(此时只有反射光线),条件就是光线在光密介质中的入射角大于临界角,(如果不是很清楚,可看一下物理课本哦,,我这里基本上只是给出结论),临界的计算公式sinC=1/n(n为折射率),即C=arcsin(1/n),而光线在空气中与法线的夹角i和光线在介质中与法线的夹角r满足折射定律公式n=sin(i )/sin(r),所以有i=arcsin(n*sin(r),至于另外的一条反射光线就简单了,入射角等于反射角,根据能量守恒,入射光的总能量=折射光的能量+反射光的能量,这一点将用他们的透明度(alpha值)反映出来。

  2、代码分析

  完整的代码如下
复制代码 fjm._y=200;
fx._x=250;
zs._x=250;
zs._y=200;
fs._x=250;
fs._y=200;
n=1.5;
onEnterFrame=function(){
jg.onMouseDown=function(){
this.startDrag(true,0,200,500,500);
};
jg.onMouseUp=function(){
this.stopDrag();
};
this.createEmptyMovieClip("mc",100);
mc.lineStyle(2,0xff0000,100);
mc.moveTo(250,200);
x=jg._x;
y=jg._y;
mc.lineTo(x,y);
A=Math.atan2(y-200,x-250);
jg._rotation=A*180/Math.PI+180;
C=Math.asin(1/n);
ljj=Math.round(C*180*10/Math.PI)/10;
if(x<250){
r=A-Math.PI/2;
if(r<C){
i=Math.asin(n*Math.sin(r));
zs._rotation=-90+i*180/Math.PI;
zs._alpha=100-i*60;
}else{
zs._alpha=0;
}
}elseif(x>250){
r=Math.PI/2-A;
if(r<C){