2024年4月16日发(作者:)
龙源期刊网
运用Actions语句实现Flash中
的热区交互
作者:杜 娟
来源:《中小学信息技术教育》2009年第01期
热区,通俗地讲就是一个看不见的交互区域,通过单击、滑过等响应方式触发其包含的其
他响应。在Flash中没有明确这种功能,但是我们可以综合运用元件(影片、按钮)和Actions
语句来实现。
一、热区的建立
(一)特殊按钮法
Flash中按钮制作共包括四帧,依次为:弹起(release)、指针经过(pass)、按下(down)和单击
(press)。如果在前三帧不做任何设置,而只在第四帧中绘制形状或导入一幅图片,如五角星、
动物、地图等,那么就制作了一个“无形”的特殊按钮。这种按钮放在场景中是看不到的,但一
样可以实现按钮的交互,在绘制的形状范围内单击,热区响应就实现了,响应的区域就是这些
隐藏的图形。
(二)元件透明法
在Flash6.0以后的版本中,图形、影片元件是可以进行类似于按钮交互的。即通过给图
片、影片元件加上Actions语句实现一些特殊的功能,而元件可以设置多种属性,所以我们说
赋予语句的元件在某种意义上是增强型的按钮。如将图片元件的透明度(Alpha)设置为“0”并且
给其加上交互语句,此时图片就是一个热区。再如,将动态影片元件进行透明度设置的话,那
么热区也在不停地变化。从而使热区更加丰富多彩。需要提示的是:这一方法同样适用于按钮
元件,虽然做法不同,但可以达到和前一种方法一样的效果。
二、热区的响应
(一)鼠标与热区的响应
龙源期刊网
当鼠标指向某一热区时,屏幕上会给出明显的变化对用户进行提示,通常采用的方式是出
现一段解释文字、鼠标外形的变化或播放声音等。
1.文字注释响应
即当鼠标进入由按钮制作的隐藏区域中,出现文字提示。此效果可利用控制元件的透明度
alhpa来完成,可以给按钮加上如下语句实现提示:首先确保提示的文字内容是一个影片元
件,为其命名为实例名instancename,并将其alpha值设定为0,即不透明。在按钮的“动作”面
板中编写如下的Active脚本:
on (rollOver) {
instancename._alpha = 100;
}
on (rollOut) {
instancename._alpha = 0;
}
2.用自定义鼠标注释响应
要创建自定义指针,可在舞台上设计某种影片剪辑。再在动作脚本中隐藏标准指针,并跟
踪自定义指针的移动。要隐藏标准指针,可使用内置Mouse类的()方法。要使用影
片剪辑作为自定义指针,可使用startDrag()动作。创建影片剪辑,将其用做自定义指针并将该
剪辑的实例放置在舞台上。在“动作”面板中键入以下内容:
on (rollOver) {
();
newmouse._alpha = 100;
startDrag(newmouse, true);
updateAfterEvent();
}
on (rollOut) {
龙源期刊网
();
newmouse._alpha = 0;
}
3.声音注释响应
当鼠标进入热区范围,通过一段声音提示。这种方式往往用于低年级识字教学中。其做法
是:首先将某段声音导入到舞台上。打开库,选中刚刚导入的声音,单击右键,点击“链接”,
在弹出的“链接属性”对话框中,输入声音的标识符,如soundlable,并将“作为动作脚本”的复
选框勾中,点击“确定”按钮确认。回到舞台上,选择“窗口”→“开发面板”→“行为”,在行为属
性框中添加声音行为,即选择“+”,选择“声音”→“从库加载声音”,在对话框中输入声音链接
的ID,也就是声音的标识符sound- lable,以及声音的实例名称,如instancename。接下来点
击“确定”按钮即可。这时,会发现“行为”属性面板上增加了“释放时”的行为,只需要将其改为
“移入时”即可。同样的操作方法,“移出时”的行为是停止声音。该部分的Active脚本如下:
on (rollOver) {
//Play Internal Sound Behavior
if(_ors == null)_ors = {};
if(_ == null)_ = {};
if(typeof EmptyMovieClip == 'undefined'){
this._EmptyMovieClip('BS_instancename',new Date().getTime()-(((new
Date().getTime()) /10000)*10000) );
_cename = new Sound(this.__instancename);
} else {
EmptyMovieClip('_instancename_',new Date().getTime()-(((new
Date().getTime()) /10000)*10000) );
_cename = new Sound(_instancename);
}
_Sound("soundlable");
if (true) {
龙源期刊网
_(0,1);
}
//End Behavior
on (rollOut) {
//Stop Sound Behavior
_("soundlable");
}
以上都是以鼠标移入热区为例进行热区响应的,其实还可以利用语句实现其他方式的响
应。如在热区内按下鼠标:s;单击热区:
ase;按下鼠标:eDown;移动鼠标:
eMove;鼠标到达热区上:Over;鼠标从
影片移到热区外:Out。
(二)元件与热区的响应
这种响应不仅仅是鼠标与热区之间的交互,而增加了第三方,也就是当某个物体被移动到
热区上时产生交互,这种方式在一些实验或游戏中经常能够见到。一般是当物体移动到热区上
时响应交互,当没有到达热区上时物体返回到原来的位置。
首先制作两个元件——被拖动的物体和热区,物体的实例名为Object,热区的实例名为
Hotarea。再为元件所在的帧加上如下Actions语句:
_s = function() {
_rag();
x0=_a._x;
y0=_a._y ;
x1=_._x;
y1=_._y;
};
_ase = function(){
龙源期刊网
_ag();
if(_t(_))
{
_._x = x0;
_._y = y0;
_ag();
trace("到达目标区域");
}
else
{ _._x = x1;
_._y = y1;
trace("没有到达");
}
};
trace语句可以替换为需要的提示方式。如:gotoandplay()、()等。
(作者单位:辽宁电化教育馆)


发布评论