这是来自北京希望电子出版社的《FLASHMX ActionScript标准教程》
在Macromedia Flash MX 动作面板中开辟了一个专门的Properties(属性)分类来方便用户调用属性。这些属性可以应用于时间轴、电影剪辑和按钮对象,如图:
_alpha 电影剪辑实例的透明度值。透明度值的取值范围为0~100。0表示完全透明,100表示完全不透明。在舞台上可以通过属性检查器设置对象的透明度属性,如图:
提示:透明度为0的对象虽然不可见,但是它仍然处于激活状态。按钮被单击依然会有响应。
_currentrfame 播放磁头当前位置的帧编号。时间轴中的帧编号以5为单位递进。
_droptarget 使用斜杠语法表示的电影剪辑实例的绝对路径。该电影剪辑实例将作为可拖动电影剪辑的目标投放位置。
_focusrect 指示具有焦点的电影剪辑是否有黄色矩形环绕,该属性默认值为true。
_framesloaded 从流式电影中载入的帧数。
_height 电影剪辑实例的高度,以象素为单位。
_name 电影剪辑实例的实例名。
_quality 设置电影的显示质量。
_rotation 电影剪辑实例的旋转角度,如图:
上面的实例相对于源实例旋转了45o。
_soundbuftime 声音播放的缓冲时间,以秒不单位。
_target 电影剪辑实例的目标路径。
_totalframes 电影剪辑实例中的总帧数。
提示:使用(_framesloaded/_totalframes)*100%可以获得电影的下载进度比例。
_url 要下载的电影剪辑所在SWF文件的URL地址。
_visible 确定电影剪辑实例是否可见的逻辑值。
_width 电影剪辑实例的宽度,以象素为单位。
_x 电影剪辑中的x坐标。
_xmouse 电影剪辑实例中光标的x坐标。
_xscale 指定电影剪辑横向缩放百分比的值。
_y电影剪辑实例中的y坐标。
_ymouse 电影剪辑实例中光标的y坐标。
_yscale 指定电影剪辑纵向缩放百分比的值。
电影剪辑属性的利用示例
下面将综合利用电影剪辑的_x,_y,_visible,_rotationt等属性,设计一个“扑蝶”的游戏。如图:
在这个游戏中,蝴蝶是不定期出现的,最长间隔时间为4秒,最短为1秒。蝴蝶每次出现的位置和旋转属性也是随机变化的。当蝴蝶出现时,用户可以单击网套住蝴蝶,每套住一次,蝴蝶闪烁一次(迅速隐藏显示,随即还原),同时计数器加1。如上图左上角显示用户已经套住了12次蝴蝶。
要制作上述游戏,请按以下步骤作:
(1) 导入或绘制蝴蝶图象、背景图象、网套图形。
(2) 选中蝴蝶图象,按F8键转换为电影剪辑符号,然后在属性检查器中将其命名为fly,如图:
(3) 选中网套图形,按F8键转换为按钮符号,然后在属性检查器将其命名为p,如图:
(4) 使用绘图工具箱中的文本工具在舞台上添加一个动态文本域,注重在文本域的属性检查器中设置Var(变量)为sum,如图:
(5) 选中舞台上的网套图形实例,在Flash MX动作面板中为其附加以下动作:
on(press){
startDrag(“_root.p”true);
if (_root.fly.hitTest(_root.p)==true){
_root.fly.visible = false;
_root.sum = _root.sum+1;
}
}
on (release) {
_root.fly._visible = true;
}
如图:
脚本注解:on(press){
//用户使用鼠标按住时,它和后面的on(press)语句构成一个完整的单击动作。
startDrag(“_root.p”true);
//当用户单击网套图形实例,即可拖动该实例。
if (_root.fly.hitTest(_root.p)==true){
//hitTest方法可以判定两个对象是否有交叉区域,假如返回值为true, 说明网套图形已经被拖动到蝴蝶电影剪辑实例上。在MovieClip对象的Methods(方法)列表中可以找到hitTest,如图:
_root.fly.visible = false;
//为了告诉用户,蝴蝶已经被套住,在这里选择了使蝴蝶电影剪辑实例消失。
_root.sum = _root.sum+1;
动态文本域中的数值递增1,表示又一只蝴蝶被套住。
on (release) {
//用户释放鼠标左键时。
_root.fly._visible = true;
蝴蝶电影剪辑实例_root.fly的_visible(可见性),属性还原为true,这一句必须添加,否则在用户套住一次蝴蝶之后,蝴蝶电影剪辑实例将永久隐藏。
(6) 选中舞台上的蝴蝶电影剪辑实例,在Flash MX运作面板中为其附加以下动作:
onClipEvent (enterFrame) {
total = Math.floor(getTimer()/1000);
atime = random(4)+1;
if ( total-pause==atime){
_root.fly._x = random(550);
_root.fly._y = random(400);
_root.fly._rotation = random(90);
pause = pause+atime;
}
}
如图所示:
脚本注解:onClipEvent (enterFrame) {
//进入当前帧时,该事件的特点是可以不断执行。
total = Math. floor(getTimer()/1000);
// getTimer()/1000 可以获取自从电影播放以来所经过的时间(秒数值)。使用Math.floor方法可以对秒数值进行取值,最终结果将存储在total变量中。
提示:Math. floor方法可以从Math.对象列表中找到 ,如图:
atime = random(4)+1;
//atime的取值范围为1~4,这个变量实际上将控制着蝴蝶电影剪辑的出现频率,最长间隔为4秒,最短为1秒
if ( total-pause==atime){
//pause 表示已经流逝的时间,因为蝴蝶电影剪辑按间隔时间出现将会有多次,所以,它的出现时间必须减去已经流逝的时间。初始情况下,pause变量为0,但是在执行一次之后,下面的pause = pause+atime;语句可以将间隔时间atime 不断累加到流逝的时间中。
_root.fly._x = random(550);
//使用random函数随机产生蝴蝶电影剪辑实例的水平位置。ramom函数可以在Deprcated(不鼓励使用的项目)>Functions(函数)列表内找到,如图所示:
_root.fly._y = random(400);
//使用random函数随机产生蝴蝶电影剪辑实例的纵向位置。
_root.fly._rotation = random(90);
//使用random函数随机产生蝴蝶电影剪辑实例的旋转属性。random(90)表示旋转角度在90o以内。
pause = pause+atime;
//它可以将每次执行的间隔时间累加起来,形成流逝时间。使用总的播放时间减去流逝的时间,便可以得到新的间隔时间。
要测试电影效果,可以按F12键在浏览.
提示:可以继续按以上思路,添加一个计时控件,限定游戏者必须在1分钟内套住若干次蝴蝶。
效果:
点击浏览该文件