Flash以其强大的动画功能越来越受到课件制作者的喜爱,特别是在互动广告、课件、游戏、MTV等方面。而Flash5.0中新增的几百条ActionScript语句则更加强了Flash的功能。ActionScript作为Flash5.0的内部语言,可以让你将各种从简单到复杂的交互添加到课件中。建立好交互后,通过捕获用户的事件(如鼠标事件和键盘事件等)来控制课件中动作的执行。
面对几百条 ActionScript命令,你可能会感觉有些力不从心。其实你并不一定要把每一条命令都搞清楚,只要清楚自己的目的是什么,通常一个相当简单的脚本就可以满足需要。当你初步学会了ActionScript语言的编写方法后,就掌握了主动权,可以学习创建更加复杂的交互应用了。下面我就用Flash制作课件时用到ActionScript的一些的具体实例作一详细介绍。希望对你有所帮助。
一、交互响应
图1
本例课件(如图1)的目的是拖动当前图形到适当位置时,如果放置位置正确则不退回图形,并说:“对了,你真棒。”如果放置位置错误则退回图形,并说:“错啦,再好好想一想。”具体操作为:选中对象,单击右键,弹出Object Actions对话框,输入ActionScript语句(如图2)。下面按语句的功能逐句作一说明:
图2
1.onClipEvent(mouseDown)
这条语句用于检测鼠标是否按下,如按下鼠标键,则程序响应。
2.a1=this._x;
b1=this._y
这两条语句是用来实现把当前影片的x,y坐标保存到变量a1,b1中,当把影片拖动到不正确的位置时,再把a1,b1变量的值赋予x,y,使影片回到初始位置。
3. if(this.hitTest(_root._xmouse,_root._ymouse,false))这里的if函数用来检测其里面的表达式的真假。真时执行函数体,否则不执行。这里使用hitTest方法来检测影片是否与鼠标发生碰撞(即重合)。其语句的格式为movieClip.hitTest(target)。程序通过hitTest和if的合用来完成整个拖动过程的检测。
4. startDrag(〞〞)
拖动语句,如没有参数,则表示拖动的是影片本身。
5. onClipEvent(mouseUp)
用于影片检测,如果鼠标键没有按下去时则响应。
6. stopDrag()
停止拖动影片。
7. if(this.hitTest (_root.window.jc))
检测当前影片是否与_root.window.jc影片发生碰撞,这里的_root.window.jc指的是根影片下window影片里的jc影片。在用hitTest方法进行检测的时候,应注意把影片所属的父影片名写清楚,否则会因为找不到影片的位置而发生错误响应。影片名称在Instance里的name选项中命名。
8. this._x=256;
this._y=-172
拖动影片到正确位置时,把准确位置的坐标赋予影片的x,y,并使其不能被移动。
9. s=new Sound();
_root.s.attachSound(〞dui〞)
_root.s.start()
创建一个声音对象s,把声音元素“dui”(注意:这里的dui是通过符号输出来实现的,如图3所示)捆绑在对象s中,然后通过_root.s.start()语句进行播放。
10. else if(this._x==a1&&this._y==b1){
stop();
}else{
this._x=a1;
this._y=b1;
s=new Sound();
_root.s.attachSound(〞cuo〞);
_root.s.start();}
图3
表示如果影片的位置没有发生变化,则停止操作;另外一种情况:当影片拖动到的位置错误时,就把原先的变量 a1,b1的值赋予影片的x,y,使影片回到初始位置。
通过上面所述的ActionScript语句,很方便地实现了一种交互响应。这种响应可以被广泛地运用于课件的制作中,当然,也可以在上面的程序中再增加一些语句来获得更好的表现效果。
二、颜色设置
下面通过填色程序来讲一下如何用ActionScript语句来实现颜色的设置。
图4
上数学课的时候,经常要给特定的图形涂上颜色。如图4左边的三个正方形开始都是白色的,当分别点击它们以后,三个正方形分别被填充了三种不同的颜色。具体的ActionScript语句如图5。其中一些语句的功能如下:
图5
1.onClipEvent(mouseDown)
鼠标键按下时响应。
2.if(this.hitTest(_root._xmouse,_root._ymouse,false))
用来检测鼠标与影片的位置是否一致。
3.a=new color(this)
创建一个颜色对象a,参数 this表示对象本身。
4.a.setRGB(0xff5500)
设置对象的RGB颜色值为0xff5500(注意:这里的颜色值是十六进制数,格式如下:setRGB(0xrrggbb),rr表示红色;gg表示绿色;bb表示蓝色)。所以,我们如果要改变对象的颜色,就只要改变rrggbb的值就可以了。
