基于flash的大学物理实验课件制作

2014-07-28 18:35李永升牛强
电脑知识与技术 2014年17期

李永升 牛强

摘要: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