李永升 牛强
摘要:Flash是一种动画创作与应用程序开发于一身的创作软件,它有良好的交互性,利用它可制作大学物理实验仿真课件。该文所述的是用它来制作“分光计的调整与使用”实验的数据输出课件方法。
关键词:分光计的调整与作用;falsh;实验数据输出
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2014)17-3972-04
1 实验中的相关量
顶角A取60度;由计算折射率的公式[n=sinδmin+A2sinA2]可知最小偏向角因折射率不同而不同,计算公式:[δmin=2arcsinnsinA2-A]。
2 制作目标
进入课件后显示的界面如图1所示。界面上方有两个表格,分别用来存放有关顶角的数据和有关最小偏向角的数据。在界面的下方有一个按钮,每点击它一次就在上面两个表格中输出一组实验数据,不同组数据一般是不同的。
3 制作过程
3.1创建文件
运行flash cs3,创建flash文件(actionScript3.0)。
3.2设置文档属性
将舞台宽度改为800像素,高度改为620像素。
3.3制件影片剪辑元件
1) 制作名为“数据格式”的影片剪辑,在它内建立两个动态文本框,它的实例名为“dushu”和“feishu”,在它们内部输入300和88,以便确定它们的大小适当。在它的属性“链接”中设置它的类名为“shujugeshi”。
2) 制作名为“数据表”的影片剪辑。如图3所示,在它上制作如图所示的表格,在表格上添加静态文本;在它的上方添加一动态文本,动态文本的实例名为“biaotou”,它内的文本为“表4 测定顶角的数据表格”。表格每行的高度为36像素,第一列宽为90像素,最后一列宽为108像素,其余各列宽为72像素。
3) 在舞台上放置“数据表”的影片剪辑的两个实例,实例名为“shujubiao1”和“shujubiao2”。
3.4编辑脚本文件
1) 更改表头文本框中文本
shujubiao1.biaotou.text="表5.6-1 测定顶角的数据表格";
shujubiao2.biaotou.text="表5.6-2 测定最小偏向角的数据表格";
2) 创建两个数组并复值
把数组中的每一个元素都复值为“数据格式”影片剪辑的一个实例,并把它们添加到标题为“表5.6-1 测定顶角的数据表格”和“5.6-2 测定最小偏向角的数据表格”的数据表中。
var array1:Array=new Array();
for (var i:int = 0; i < 24; i++) {
array1[i] =new shujugeshi();
array1[i].y=86+Math.floor(i/6)*36;
array1[i].x=94+i%6*72;
shujubiao1.addChild(array1[i]);}
var array2:Array=new Array();
for (var k:int = 0; k < 24; k++) {
array2[k] =new shujugeshi();
array2[k].y=86+Math.floor(k/6)*36;
array2[k].x=94+k%6*72;
shujubiao2.addChild(array2[k]);}
3)制作和设置按钮并为它设置事件
import fl.controls.Button;
var shujushengchang:Button=new Button();
shujushengchang.move(300,560)
shujushengchang.label="数据输出";
shujushengchang.setSize(150,40);
addChild(shujushengchang);
var myFormat:TextFormat = new TextFormat("SIMHEI",25,0x000000,true);
shujushengchang.setStyle("textFormat", myFormat);
shujushengchang.addEventListener(MouseEvent.CLICK,fuzhishuju)
4)设计函数
A.用于选择折射率的函数
实验中用的三棱镜的折射率有多种,下面的脚本语言用于随机产生一种折射率。
var zheshelu:Number;
function zhesheluxuanze(){
var mm:int=Math.floor(Math.random()*3.98);
if(mm==0){zheshelu=1.5153};
if(mm==1){zheshelu=1.6152};
if(mm==2){zheshelu=1.6085};
if(mm==3){zheshelu=1.7515};}
B.计算偏向角的函数
用于在给定参数折射率的情况下计算最小偏向角。
function pianxiangjiao(x:Number):Number{endprint
var min:Number=2*Math.asin(x*Math.sin(Math.PI/6))-Math.PI/3;
return (min+0.00029*(Math.random()*8-4))*180/Math.PI;}
C.顶角复值函数
输出一个在一定范围内的顶角的值。
function dingjisofuzhi(){
var dingjiao:Number=(Math.PI/3+0.00029*(Math.random()*8-4))/Math.PI*180;
return(dingjiao)}
D.按钮的事件响应函数
用于给表中各元素复值。
function fuzhishuju(e:MouseEvent){
//顶角复值
var temp1=Math.random()*360;
var temp:Number;
shuzufuzhi(0,6,temp1)
var temp2:Number=temp1+180;
shuzufuzhi(6,12,temp2);
var temp3=temp1+2*dingjisofuzhi();
shuzufuzhi(12,18,temp3);
var temp4=temp3+180;
shuzufuzhi(18,24,temp4)
//最小偏向角复值
zhesheluxuanze();
var temp5=pianxiangjiao(zheshelu);
temp1=Math.random()*360;
shuzufuzhi2(0,6,temp1)
temp2=temp1+180;
shuzufuzhi2(6,12,temp2)
temp3=temp1+temp5;
shuzufuzhi2(12,18,temp3)
temp4=temp3+180;
shuzufuzhi2(18,24,temp4)}
E.对数组中的用来显示顶角数值的元素复值函数。
function shuzufuzhi(x:int,y:int,z:Number){
var temp:Number;
for (var i:int = x; i < y; i++){
temp=z+0.15*(Math.random()-0.5);
if(temp>=360){
temp=temp-360;}
array1[i].dushu.text=Math.floor(temp);
array1[i].feishu.text=Math.round((temp-Math.floor(temp))*60);
//用于消除60分的情况。
if(Math.round((temp-Math.floor(temp))*60)==60){
array1[i].dushu.text=Math.floor(temp+1);
array1[i].feishu.text=0;}}}
F.对数组中的用来显示顶角数值的元素复值函数。
function shuzufuzhi2(x:int,y:int,z:Number){
var temp:Number;
for (var i:int = x; i < y; i++){
temp=z+0.15*(Math.random()-0.5);
if(temp>=360){
temp=temp-360;}
array2[i].dushu.text=Math.floor(temp);
array2[i].feishu.text=Math.round((temp-Math.floor(temp))*60);
//用于消除60分的情况。
if(Math.round((temp-Math.floor(temp))*60)==60){
array2[i].dushu.text=Math.floor(temp+1);
array2[i].feishu.text=0;}}}
F.进入课件后就对两表中元素进行一次复值
fuzhishuju(null)
3.5 课件输出
点击文件下拉菜单中的发布即可输出实验课件。
4 结束语
本课件是大学物理实验课的一个补充,在一些特别的情况下可为进行实验的学生提供实验“分光计的调整及使用”实验的实验数据,为学生能进一步书实验报告提供便利。
参考文献:
[1] 杨延欣,赵春华.大学物理实验[M].北京:科学出版社,2011:189-198.
[2] 程守洙,江之永.普通物理学[M].北京:高等教育出版社,1998:167-168.endprint
var min:Number=2*Math.asin(x*Math.sin(Math.PI/6))-Math.PI/3;
return (min+0.00029*(Math.random()*8-4))*180/Math.PI;}
C.顶角复值函数
输出一个在一定范围内的顶角的值。
function dingjisofuzhi(){
var dingjiao:Number=(Math.PI/3+0.00029*(Math.random()*8-4))/Math.PI*180;
return(dingjiao)}
D.按钮的事件响应函数
用于给表中各元素复值。
function fuzhishuju(e:MouseEvent){
//顶角复值
var temp1=Math.random()*360;
var temp:Number;
shuzufuzhi(0,6,temp1)
var temp2:Number=temp1+180;
shuzufuzhi(6,12,temp2);
var temp3=temp1+2*dingjisofuzhi();
shuzufuzhi(12,18,temp3);
var temp4=temp3+180;
shuzufuzhi(18,24,temp4)
//最小偏向角复值
zhesheluxuanze();
var temp5=pianxiangjiao(zheshelu);
temp1=Math.random()*360;
shuzufuzhi2(0,6,temp1)
temp2=temp1+180;
shuzufuzhi2(6,12,temp2)
temp3=temp1+temp5;
shuzufuzhi2(12,18,temp3)
temp4=temp3+180;
shuzufuzhi2(18,24,temp4)}
E.对数组中的用来显示顶角数值的元素复值函数。
function shuzufuzhi(x:int,y:int,z:Number){
var temp:Number;
for (var i:int = x; i < y; i++){
temp=z+0.15*(Math.random()-0.5);
if(temp>=360){
temp=temp-360;}
array1[i].dushu.text=Math.floor(temp);
array1[i].feishu.text=Math.round((temp-Math.floor(temp))*60);
//用于消除60分的情况。
if(Math.round((temp-Math.floor(temp))*60)==60){
array1[i].dushu.text=Math.floor(temp+1);
array1[i].feishu.text=0;}}}
F.对数组中的用来显示顶角数值的元素复值函数。
function shuzufuzhi2(x:int,y:int,z:Number){
var temp:Number;
for (var i:int = x; i < y; i++){
temp=z+0.15*(Math.random()-0.5);
if(temp>=360){
temp=temp-360;}
array2[i].dushu.text=Math.floor(temp);
array2[i].feishu.text=Math.round((temp-Math.floor(temp))*60);
//用于消除60分的情况。
if(Math.round((temp-Math.floor(temp))*60)==60){
array2[i].dushu.text=Math.floor(temp+1);
array2[i].feishu.text=0;}}}
F.进入课件后就对两表中元素进行一次复值
fuzhishuju(null)
3.5 课件输出
点击文件下拉菜单中的发布即可输出实验课件。
4 结束语
本课件是大学物理实验课的一个补充,在一些特别的情况下可为进行实验的学生提供实验“分光计的调整及使用”实验的实验数据,为学生能进一步书实验报告提供便利。
参考文献:
[1] 杨延欣,赵春华.大学物理实验[M].北京:科学出版社,2011:189-198.
[2] 程守洙,江之永.普通物理学[M].北京:高等教育出版社,1998:167-168.endprint
var min:Number=2*Math.asin(x*Math.sin(Math.PI/6))-Math.PI/3;
return (min+0.00029*(Math.random()*8-4))*180/Math.PI;}
C.顶角复值函数
输出一个在一定范围内的顶角的值。
function dingjisofuzhi(){
var dingjiao:Number=(Math.PI/3+0.00029*(Math.random()*8-4))/Math.PI*180;
return(dingjiao)}
D.按钮的事件响应函数
用于给表中各元素复值。
function fuzhishuju(e:MouseEvent){
//顶角复值
var temp1=Math.random()*360;
var temp:Number;
shuzufuzhi(0,6,temp1)
var temp2:Number=temp1+180;
shuzufuzhi(6,12,temp2);
var temp3=temp1+2*dingjisofuzhi();
shuzufuzhi(12,18,temp3);
var temp4=temp3+180;
shuzufuzhi(18,24,temp4)
//最小偏向角复值
zhesheluxuanze();
var temp5=pianxiangjiao(zheshelu);
temp1=Math.random()*360;
shuzufuzhi2(0,6,temp1)
temp2=temp1+180;
shuzufuzhi2(6,12,temp2)
temp3=temp1+temp5;
shuzufuzhi2(12,18,temp3)
temp4=temp3+180;
shuzufuzhi2(18,24,temp4)}
E.对数组中的用来显示顶角数值的元素复值函数。
function shuzufuzhi(x:int,y:int,z:Number){
var temp:Number;
for (var i:int = x; i < y; i++){
temp=z+0.15*(Math.random()-0.5);
if(temp>=360){
temp=temp-360;}
array1[i].dushu.text=Math.floor(temp);
array1[i].feishu.text=Math.round((temp-Math.floor(temp))*60);
//用于消除60分的情况。
if(Math.round((temp-Math.floor(temp))*60)==60){
array1[i].dushu.text=Math.floor(temp+1);
array1[i].feishu.text=0;}}}
F.对数组中的用来显示顶角数值的元素复值函数。
function shuzufuzhi2(x:int,y:int,z:Number){
var temp:Number;
for (var i:int = x; i < y; i++){
temp=z+0.15*(Math.random()-0.5);
if(temp>=360){
temp=temp-360;}
array2[i].dushu.text=Math.floor(temp);
array2[i].feishu.text=Math.round((temp-Math.floor(temp))*60);
//用于消除60分的情况。
if(Math.round((temp-Math.floor(temp))*60)==60){
array2[i].dushu.text=Math.floor(temp+1);
array2[i].feishu.text=0;}}}
F.进入课件后就对两表中元素进行一次复值
fuzhishuju(null)
3.5 课件输出
点击文件下拉菜单中的发布即可输出实验课件。
4 结束语
本课件是大学物理实验课的一个补充,在一些特别的情况下可为进行实验的学生提供实验“分光计的调整及使用”实验的实验数据,为学生能进一步书实验报告提供便利。
参考文献:
[1] 杨延欣,赵春华.大学物理实验[M].北京:科学出版社,2011:189-198.
[2] 程守洙,江之永.普通物理学[M].北京:高等教育出版社,1998:167-168.endprint