APP下载

化学实验仪器组装课件的设计

2009-06-25李书有

中国信息技术教育 2009年9期
关键词:元件仪器课件

李书有

本文介绍化学课件设计中的一种重要情形——实验仪器组装部分的设计理论和设计技术。文中的示例《氧气的实验室制法》模拟课件(效果如右图所示),以Flash 8.0作为创作工具,使用影片剪辑的相关方法,实现技术要求,达到适应开放式教学、给学生更多探究和分析空间,以实现以学生为主体的教学目标的设计目的。具体的效果及源文件,请到http://www.i-wing.com.cn/dispbbs.php?boardid=5&id=36page=1页面下载。

● 实验需求分析

要设计出仪器组装模拟课件,需要实现两方面的内容:一是设计组装实验装置所需要的相关元件。这些所需元件,都可以使用Flash的绘制工具进行绘制。需要注意的是,这些元件都需要设置为影片剪辑类型的元件,方便后面的程序控制。二是动作脚本方面。通过设计相应的动作脚本,实现如下方面的技术需求:①元件能够被拖动。此处使用影片剪辑对象的startDrag方法和stopDrage方法来实现。②元件能够进行接触测试,即实现将元件拖动到指定位置时,通过碰撞测试,确认元件是否被放到了指定的位置。③元件能够进行顺序测试,即判断拖动和释放的元件的顺序是否符合实验装置组装的一般顺序。④能够给出反馈提示。反馈提示包括当前拖动的元件是哪一个、释放的位置是不是正确、是不是按照正确的顺序进行组装等。

● 设计框架

一个实验仪器组装类的探究课件可分为三大块:元件区,组装区和提示区。

元件区:用于放置原始元件的区域,在放置错误后,元件会自动回到原始的位置。

组装区:用于放置组装正确的元件,并在此区域实现实验仪器的组装。

提示区:此区域主要放置一个动态文本框,用于显示出错后的文本内容。

● 核心技术

本课件的核心是通过接触测试,确认拖动的仪器是不是按照指定的顺序,放在了指定的位置。所以在设计中,重点要处理的就是这方面的技术。

仪器的拖动顺序:首先对每一个仪器元件附加一个thisindex属性,表示正确拖动的位置索引,从1开始,其后一直增加。接着定义一个全局变量_global.sx,确认当前应该摆放的仪器的序号,如果此序号与仪器的thisindex属性相同,则表示顺序正确,全局变量_global.sx加1,继续下一个仪器的摆放,直到全部完成。

仪器的拖动和接触测试:使用影片剪辑的startDrag方法进行拖动,使用影片剪辑的hitTest方法进行接触测试。这样就需要在正确的位置摆放与此相对应的元件,不过在没有检测到正确摆放之前,正确的元件透明度设置要比较低,基本无法看到。然后在元件摆放到正确的位置之后,设置拖动的元件消失,而正确的元件完全显示出来。这样就能够实现元件的拖动和碰撞测试效果。由于在使用过程中需要多次使用此段程序,所以用类的继承方法实现了一个继承自MovieClip类的方法hit,实现拖动、接触测试、文本提示等相应的效果。此方法有两个参数,参数mc表示要被接触到的真实仪器的实例名称,而txt表示提示文本框的实例名称。运用此方法时,先创建全局变量_global.sx,然后对要拖动的元件设置其thisindex属性(拖动正确顺序)和tip属性(表示仪器名称),最后执行hit方法,就能够实现效果了。具体代码及相应的说明如下所示。

MovieClip.prototype.hit = function(mc:MovieClip, txt:TextField) {//自定义一个hit类函数

this.tempx = this._x;//获得要移动的mc的初始坐标

this.tempy = this._y;

this.onPress = function() {

txt.text = this.tip;

this.startDrag();//按下鼠标,拖动mc

};

this.onRelease = function() {//释放鼠标

if (this.hitTest(mc)) {

if (_global.sx == Number(this.thisindex)) {

//如果接近要接触的mc,停止拖动,设置mc的坐标为接近的mc的坐标

this.stopDrag();

this._x = mc._x;

this._y = mc._y;

mc._alpha = 100;

this._alpha = 0;

_global.sx++

txt.text = "恭喜你,你的摆放正确,继续进行哦!";

} else {

this.stopDrag();

this._x = this.tempx;

this._y = this.tempy;

txt.text = "很遗憾,你的摆放顺序不正确,继续努力哦!";

}

} else {

//如果没有接近,停止拖动,回到原来的位置

this.stopDrag();

this._x = this.tempx;

this._y = this.tempy;

txt.text = "很遗憾,你的摆放位置不正确,继续努力哦!";

}

};

};

下面是对一个仪器的简单示例代码,其中m1为要拖动的铁架台元件的实例名称,m2为处于正确位置的隐形元件的实例名称,其他的与此相类,不再赘述。

_global.sx = 1;

m1.thisindex = 1;

m1.tip = "铁架台";

m1.hit(mc1, txt);

猜你喜欢

元件仪器课件
《从“贞观之治”到“开元盛世”》教学课件
事出有因
初中数学教学中课件设计的重要性
发明
如何读懂色环电阻
非线性元件的处理
不可忽视的化学仪器的创新使用
仪器工作原理决定了仪器的读数规则
WEB课件开发系统的设计思路
上海风云“东邪”谁属