语法格式:
on (mouseEvent) {
}
“()”小括号中的mouseEvent参数是鼠标事件,常用的有以下几种鼠标事件:
Press ---当鼠标指针经过按钮时按下鼠标。
release ---当鼠标指针经过按钮时按下再释放鼠标按钮。
releaseOutside ---当鼠标指针在按钮之内时按下按钮后,将鼠标指针移到按钮之外,此时释放鼠标按钮。
rollOut ---鼠标指针滑出按钮区域。
rollOver ---鼠标指针滑过按钮。
------------------------------------------------------------------------------------------------
on (release) {
_root.shu_mc.stop();
}
绝对路径:Flash中目标路径有两种,绝对路径和相对路径,我们今天接触的“_root.shu_mc.stop()”是绝对路径,指定了发生stop动作的绝对地址和对象,这个绝对地址就是当前场景_root,对象就是影片剪辑“shu_mc”,即让当前场景“_root”上的实例名为“shu_mc”的影片剪辑对象“stop”停止播放。
如果我们要执行动作的对象“shu_mc”影片剪辑,没有直接位于主场景上,而是嵌套在另外一个位于主场景的影片剪辑“a”中,甚至是嵌套在更深的级别中呢,那就得一级级指明路径,程序指令才能正确的执行。
打个比方,我们在闪客起航论坛的首页上,要打开论坛里的“敲开Flash AS之门”这篇教程,就得按照正确的路径一级一级的找到它才能打开,如果我们把URL的路径“/”换成“.”来表示,打开这个教程的路径就是:
启航论坛首页(_root).Flash技术论坛(mc1).脚本技术区(mc2).敲开Flash AS之门(mc3).打开(动作);
_root绝对路径,即当前,或根目录
点语法“.”:是基于“面向对象”的语法形式,就是利用目标对象本身去管理自己,用“.”语法通知目标对象执行什么指令是非常简洁的语法形式。比如此处,就用了“.”语法通知“_root”上的“shu_mc”“stop”停止播放。
对象的后缀: 在Flash中有各种对象,如按钮、影片剪辑、文本、图形、声音对象等等,在动作脚本中,有对应这些对象的特定后缀,每一种后缀代表一种特定的对象,比如影片剪辑的后缀为“_mc”,文本对象的后缀为“_txt”,在为对象命名时有必要正确的添加后缀,如上面的“shu_mc”,这样不仅使语句更符合规范,在别人解读代码时方便的知道对象的类型,也能够让Flash识别对象的类型,在添加语句时才能有效使用代码提示功能。
on (rollover){
_root.stop();
}//当鼠标滑过影片剪辑时,停止播放当前时间轴
on (press){
stop();
}//当鼠标按下时,停止播放剪辑
on (release){
play();
}//当在影片剪辑上按下并释放鼠标时,播放影片剪辑
on (rollout){
_root.play();
}//当鼠标滑离影片剪辑时,播放当前时间轴
------------------------------------------------------------------------------------------------
主场景上的一组蓝色按钮控制的是huan_mc的透明度属性:
_alpha : 透明度属性,以百分比为单位。
蓝色减号“-”按钮上的语句:
on (release) {
_root.huan_mc._alpha = 50;
} //点击按钮时,将场景上的huan_mc影片剪辑透明度设为50
蓝色加号“+”按钮上的语句:
on (release) {
_root.huan_mc._alpha = 100;
} //点击按钮时,将场景上的huan_mc影片剪辑透明度设为100。
这一组按钮的语句很简单,直接将一个常量赋值给场景上的huan_mc影片剪辑对象的透明度属性。
主场景上的一组红色按钮控制的是huan_mc的纵、横向缩放比例属性:
_xscale 影片剪辑的横向缩放比例,以百分比为单位。
_yscale 影片剪辑的纵向缩放比例,以百分比为单位。
红色加号“+”按钮上的语句:
on (release) {
_root.huan_mc._xscale = _root.huan_mc._xscale*1.1;
_root.huan_mc._yscale = _root.huan_mc._yscale*1.1;
}
红色减号“-”按钮上的语句:
on (release) {
_root.huan_mc._xscale = _root.huan_mc._xscale*0.9;
_root.huan_mc._yscale = _root.huan_mc._yscale*0.9;
}
这一组按钮上的语句中,属性的取值就不是一个简单的常量了,而是通过两个表达式计算出对象的纵、横向缩放比例,如“_root.huan_mc._xscale*1.1”,计算的结果就是横向缩放比例为场景上的huan_mc横向缩放比例的1.1倍即110%。再将这个结果赋值给表达式左边指定的影片剪辑对象的相应属性,点击一次按钮就会计算一次,由此令该影片剪辑对象按照每一次计算出的比例进行纵、横向等比例缩放。
下面再来看看主场景上的一组绿色“上”、“下”、“左”、“右”按钮,这一组按钮控制的是位于huan_mc内部的shu_mc的纵、横坐标属性。
_x 影片剪辑的横坐标属性,单位为像素。
_y 影片剪辑的纵坐标y 坐标,单位为像素。
绿色“向上”按钮上的语句:
on (release) {
_root.huan_mc.shu_mc._y = _root.huan_mc.shu_mc._y-10;
}
当点击鼠标时,即由右边的表达式计算出“shu_mc”的y(纵)坐标位置,然后赋值给shu_mc的纵坐标属性,如shu_mc在场景上的初始x、y位置为(0,0),第一次点击鼠标,shu_mc的位置变为(0,-10),即上移10个像素。每点击一次,上移10个像素。
其他“向下”、“向左”、“向右”3个按钮同理。
主场景右下角绿色加号“+”、减号“-”按钮控制的是主场景(_root)的纵、横向等比例缩放,每点击一次减号“-”按钮,主场景按90%的比例缩小,点击加号“+”按钮,比例还原到100%。
从相对路径控制影片剪辑属性:
以上所述,主场景上的按钮都是以绝对路径的方式控制各级影片剪辑的相关属性。绝对路径在前面的内容里已经学习过。下面我们再来看看位于“shu_mc”影片剪辑内部的按钮是如何控制影片剪辑属性的。
分别点击两个红色按钮,可以调整huan_mc影片剪辑的纵、横向等比例缩放,分别点击两个绿色按钮,可以控制主场景的纵、横向等比例缩放,与主场景上相应按钮的控制效果相同,但是,它们路径的指向却有所不同。
红色加号“+”按钮上的语句:
on (release) {
this._parent._xscale = this._parent._xscale*1.1;
this._parent._yscale = this._parent._yscale*1.1;
}
红色减号“+”按钮上的语句:
on (release) {
this._parent._xscale = this._parent._xscale*0.9;
this._parent._yscale = this._parent._yscale*0.9;
}
与主场景上红色按钮的语句不同之处是,路径不一样,前者使用标识符“_root”指定绝对路径,而这里是以标识符“this”和“_parent”指定相对路径,这是我们这一节要掌握的又一个知识点。
this 当将其附加到按钮的 on 事件动作中时,它指向的是包含该按钮的影片剪辑的时间轴。
_parent 当将其附加到按钮的 on 事件动作中时,它指向的是包含该按钮的影片剪辑时间轴的上一级时间轴,即父时间轴。
比如红色按钮上的“this._parent”,this指向的就是包含了按钮的“shu_mc”影片剪辑的时间轴,“_parent”指向的是包含了按钮的“shu_mc”影片剪辑的上一级影片剪辑的时间轴,即“huan_mc”影片剪辑时间轴。
所以,当点击位于“shu_mc”中的红色按钮时,它控制的是“huan_mc”的纵、横向等比例缩放属性。
再看位于“shu_mc”中的绿色按钮上的语句:
绿色减号“-”按钮上的语句:
on (release) {
this._parent._parent._xscale = this._parent._parent._xscale*0.9;
this._parent._parent._yscale = this._parent._parent._yscale*0.9;
}
绿色加号“+”按钮上的语句:
on (release) {
this._parent._parent._xscale = 100;
this._parent._parent._yscale = 100;
}
这里,又多了一级“_parent”,按照上面的路径分析,“_parent._parent”指向的就应该是包含了按钮的“shu_mc”影片剪辑的上一级“huan_mc”影片剪辑的上一级时间轴,即主场景“_root”的时间轴。
所以,当点击按钮时,控制的是主场景时间轴的等比例缩放。
以shu_mc里嵌套的按钮为例,我们把绿色减号“-”按钮上控制主场景横向缩放比例的语句改成绝对路径方式:
this._parent._parent._yscale 可以写成 _root._yscale
在熟悉了路径概念,并能加以灵活应用之后,语句是可以加以简化的,比如:
_root.huan_mc._alpha = 100; 可以写成 huan_mc._alpha = 100;
this._parent._parent._yscale = 100; 可以写成 _parent._parent._yscale = 100;
路径的概念非常重要,在添加动作时,如果路径的指向不正确,就实现不了预期的效果,甚至会引起程序出错。