onClipEvent()
可用性
Flash Player 5。
用法
onClipEvent(movieEvent){
// 此处是您的语句
}
参数
movieEvent 是一个称作事件 的触发器。当事件发生时,执行该事件后面大括号中的语句。可以为 movieEvent 参数指定下面的任何值:
load 影片剪辑一旦被实例化并出现在时间轴中时,即启动此动作。
unload 在从时间轴中删除影片剪辑之后,此动作在第 1 帧中启动。在向受影响的帧附加任何动作之前,先处理与 Unload 影片剪辑事件关联的动作。
enterFrame 以影片剪辑帧频不断触发的动作。首先处理与 enterFrame 剪辑事件关联的动作,然后才处理附加到受影响帧的所有帧动作。
mouseMove 每次移动鼠标时启动此动作。_xmouse 和 _ymouse 属性用于确定当前鼠标位置。
mouseDown 当按下鼠标左键时启动此动作。
mouseUp 当释放鼠标左键时启动此动作。
keyDown 当按下某个键时启动此动作。使用 Key.getCode() 获取有关最后按下的键的信息。
keyUp 当释放某个键时启动此动作。使用 Key.getCode() 方法获取有关最后按下的键的
信息。
data 当在 loadVariables() 或 loadMovie() 动作中接收数据时启动此动作。当与
loadVariables() 动作一起指定时,data 事件只在加载最后一个变量时发生一次。当与 loadMovie() 动作一起指定时,获取数据的每一部分时,data 事件都重复发生。
说明
事件处理函数;触发为特定影片剪辑实例定义的动作。
示例
下面的语句在导出 SWF 文件时包括来自外部文件的脚本;当加载包含脚本中的动作所附加到的影片剪辑时,运行这些动作:
onClipEvent (load) {
#include "myScript.as"
}
下面的示例将 onClipEvent() 与 keyDown 影片事件一起使用。keyDown 影片事件通常与 Key 对象的一个或多个方法和属性一起使用。下面的脚本使用 Key.getCode() 找出用户按下了哪个键;如果按下的键与 Key.RIGHT 属性相匹配,则将影片转到下一帧;如果按下的键与 Key.LEFT 属性相匹配,则将影片转到上一帧。
onClipEvent(keyDown) {
if (Key.getCode() == Key.RIGHT) {
_parent.nextFrame();
} else if (Key.getCode() == Key.LEFT){
_parent.prevFrame();
}
}
下面的示例将 onClipEvent() 与 mouseMove 影片事件一起使用。_xmouse 和 _ymouse 属性跟踪每次鼠标移动时的鼠标位置。
onClipEvent(mouseMove) {
stageX=_root._xmouse;
stageY=_root._ymouse;
}
FLASH中MC事件详解
MC的事件说明如下:
Load:当MC 被装载进来的时候发生此事件
EnterFrame:当MC被卸载的时候发生此事件
MouseDown:当鼠标左键被按下时发生此事件
MouseUp:当鼠标左键被松开时发生此事件
MouseMove:当鼠标移动的时候发生此事件
Keydown:当键盘按钮被按下时发生此事件
Keyup:当键盘按钮被松开时发生此事件
Data:使用loadVariable或者loadMovie动作,当接受到数据时,发生此事件
MovieClip (对象)
MC对象的方法中,规定了一些操作MC目标的标准动作。另外,还提供了Action 面板所列出的标准动作之外的额外功能。你调用MC对象的方法时,不需要先调用构造函数,相反,你可以使用下面的语法来直接引用MC的实体名字。
anyMovieClip.play();
anyMovieClip.gotoAndPlay(3);
MovieClip对象方法列表:
方法 说明
attachMovie 绑定库中的一段movie。
duplicateMovieClip 复制指定的movie clip。
getBounds 返回指定的坐标空间中Movie的最大和最小X、Y坐标值。
getBytesLoaded 返回指定MC中被载入的字节数。
getBytesTotal 返回指定MC的字节总数。
getURL 执行URL请求。
globalToLocal 将指针对象从主场景中的坐标系转换到指定MC的本地坐标系中。
gotoAndPlay 跳到MC中的指定帧并开始播放动画。
gotoAndStop 跳到MC中的指定帧并停止播放动画。
hitTest 如果指定MC的范围与目标MC的范围交叉的话,返回true。
loadMovie 将指定的动画载入到MC中。
loadVariables 从URL或者其他位置中载入变量到MC中。
localToGlobal 将指针对象从MC的本地坐标系中转换到主场景中的坐标系中。
nextFrame 播放MC的下一帧。
play 播放指定的MC
prevFrame 播放MC的前一帧。
removeMovieclip 将用duplicateMovieClip动作或者attachMovie方法产生的MC从时间线上删除。
startDrag 指定一个MC为可拖动的,并开始拖动这个MC。
stop 停止当前动画的播放。
stopDrag 停止当前被拖动的任何MC。
swapDepths 将指定的MC与指定深度值所在的MC进行深度值的互换。
unloadMovie 将用loadMovie载入的动画删除。
MovieClip.attachMovie
语法:
anyMovieClip.attachMovie(idName, newname, depth);
参数:
idName 要绑定的库中Movie的名字。这个名字就是元素的Linkage Properties对话框中输入的标识名。
newname 就是被绑定MC的实体名,必须是唯一的。
depth 一个整数值,用来指定MC所在的深度值。
说明:
方法;为库中的动画产生一个新的实体,并绑定指定的anyMovieClip中。使用 removeMovieClip 或者 unloadMovie 动作或者方法可以删除绑定的动画。
播放器:
Flash 5 或以后版本。
参考:
removeMovieClip
unloadMovie
MovieClip.removeMovieClip
MovieClip.unloadMovie
MovieClip.duplicateMovieClip
语法:
anyMovieClip.duplicateMovieClip(newname, depth);
参数:
newname 复制MC使用的唯一标识,(就是实体名)。
depth 复制的MC所在的深度值。
说明:
方法;在动画运行当中产生指定MC的新实体。 产生的MC总是在第一帧开始播放,而不管在复制MC时原始MC处于哪一帧。原始MC中的变量将不复制到新生成的MC中。如果原始MC被删除,那么由它复制的MC也将被删除。通过 duplicateMovieClip 产生的MC可以使用 removeMovieClip 动作或者方法来删除。
播放器:
Flash 5 或以后版本
参考:
removeMovieClip
MovieClip.removeMovieClip
MovieClip.getBounds
语法:
anyMovieClip.getBounds(targetCoordinateSpace);
参数:
targetCoordinateSpace 作为转换参考点使用的那个坐标系所在的目标路径。
说明:
方法;返回MC在参数中指定的目标坐标系中的x,y坐标范围。返回的对象中包含有以下属性 {xMin, xMax, yMin, yMax}. 使用MC对象的 localToGlobal 和 globalToLocal 方法可以实现本地坐标系和主场景坐标系之间的相互转换。
播放器:
Flash 5 或以后版本
例子:
下面的例子中,使用 getBounds 来获取 myMoviceClip 实体在主场景坐标系中的坐标范围:
myMovieClip.getBounds(._root);
参考:
MovieClip.globalToLocal
MovieClip.localToGlobal
MovieClip.getBytesLoaded
语法:
anyMovieClip.getBytesLoaded();
参数:
无
说明:
方法;返回指定MC对象被载入的字节数。因为内部的MC是自动装载的,所以当MC对象是指定一个内部MC时,这个方法的返回值和MovieClip.getBytesTotal返回值是相同的。这个方法是特别用来在载入动画中使用的,你可以通过比较getBytesLoaded与getBytesTotal来知道外部动画载入的百分比。
播放器:
Flash 5 或以后版本
MovieClip.getBytesTotal
语法:
anyMovieClip.getBytesTotal();
参数:
无
说明:
方法;返回指定MC对象的字节总数。对于外部的MC,(主动画或者是被载入到一个目标MC或层之中的MC),返回值就是SWF文件的大小。
播放器:
Flash 5 或以后版本。
MovieClip.getURL
语法:
anyMovieClip.getURL(URL [,window, variables]]);
参数:
URL 要执行的URL请求操作。
window 可选参数,指定URL响应所在的窗口名或者帧名。 你也可以使用下面的目标名: _self 使用当前窗口中的当前帧,_blank 指定一个新的窗口,_parent 指定当前帧的父窗口, _top 指定当前窗口的最顶级窗口。
variables 可选参数,指定传递变量的方法,如果不传递变量,就忽略这个参数;否则,指定变量的传递方法为GET或者POST。 GET方法将变量加到URL的末尾,通常在变量较少的时候使用。POST 将变量以分隔开来的HTTP头传递变量,通常在传递变量较长时使用。
说明:
方法;在特定的窗口中执行特定的URL响应。getURL方法也可以用来传递变量到URL定义的另一个应用中,通过GET或者POST的方法。
播放器:
Flash 5 或以后版本
MovieClip.globalToLocal
语法:
anyMovieClip.globalToLocal(point);
参数:
point 一个以x,y坐标为属性的对象(这里暂时叫指针对象吧),这个对象是通过产生新的generic Object对象获得的。
说明:
方法; 将指针对象从主场景坐标系转换到MC的本地坐标系中。
播放器:
Flash 5 或以后版本
例子:
下面的例子将包含有主场景的x,y坐标的指针对象转换成MC中的本地坐标。
onClipEvent(mouseMove) {
point = new object();
point.x = _root._xmouse;
point.y = _root._ymouse;
globalToLocal(point);
_root.out = _xmouse + " === " + _ymouse;
_root.out2 = point.x + " === " + point.y;
updateAfterEvent();
}
参考:
MovieClip.localToGlobal
MovieClip.getBounds
MovieClip.gotoAndPlay
语法:
anyMovieClip.gotoAndPlay(frame);
参数:
frame 播放头将要被设置的帧位置(就是要开始播放的帧位置)。
说明:
方法;在指定的帧数开始播放动画。
播放器:
Flash 5 或以后版本。
MovieClip.gotoAndStop
语法:
anyMovieClip.gotoAndStop(frame);
参数:
frame 播放头所要移到的帧位置。
说明:
方法;跳到指定的帧并停止动画的播放。
播放器:
Flash 5 或以后版本。
MovieClip.hitTest
语法:
anyMovieClip.hitTest(x, y, shapeFlag);
anyMovieClip.hitTest(target);
参数:
x 在主场景中点击区的x坐标。
y 在主场景中点击区的y坐标。
x,y坐标都是定义在主场景的坐标系中的。
target 判断anyMovieClip这个实体所要相交的目标MC。这个目标通常是表现为一个按纽或者是文本框。
shapeFlag 是一个布尔值,当为(true)值时,将根据实体的外型进行判断,当为(false)值时,则简单地按照实体的范围框(即按照MC的上下左右范围)进行判断。这个参数只用在第一种形式中。
说明:
方法;判断指定的anyMovieClip是否和另外一个MC或者用x.y坐标指定的点交叉。
第一种用法将指定实体的外形或者范围框(通过shapeFlag设置)与x,y坐标的点相比。如果shapFlag为true,那么使用实体中的实际外形进行比较,实体中任何一个点经过(x,y)这个点时,该方法返回值true。这在判断MC的指定点击区(热区)时非常有用。
第二种用法判断指定实体和目标的范围框是否交叉,它们任何点的交叉将导致返回值为true。
播放器:
Flash 5 或以后版本
例子:
下面的例子判断你的MC实体 yourmc 是否经过点(100,200):
if ( yourmc.hitTest( 100 , 200 , false ) ); //(100,200)为你判断的点的坐标
其中最后一个参数: false 判断 yourmc 的范围框(上下左右范围)是否经过(100,200)的点
true 判断 yourmc 的实际外形是否经过(100,200)的点
下面的例子利用hitTest与x_mouse和y_mouse参数来判断鼠标是否经过目标MC的范围:
if (hitTest( _root._xmouse, _root._ymouse, false)); (请放在MC的onClipEvent (enterFrame)事件中,否则看不到效果)
下面的例子判断MC实体ball是否与另一MC实体square交叉:
if(_root.ball.hittest(_root.square)){
trace("ball intersects square";
}
参考:
MovieClip.localToGlobal
MovieClip.globalToLocal
MovieClip.getBounds
MovieClip.loadMovie
语法:
anyMovieClip.loadMovie(url [,variables]);
参数:
url 到要载入的SWF文件的绝对或者相对的URL路径。相对路径必须连接到SWF文件中。URL路径必须在当前动画所在路径的同一个子域。当使用FLash播放器或者在FLash中使用Test-mode模式直接测试时,所有的SWF文件必须放在同一个目录下,文件名中不能包含有文件夹名以及驱动器名。
variables 可选参数;指定载入动画时关联变量使用的方法。这个参数必须是字符串"GET"或者"POST"。如果没有变量相关联,就忽略这个参数。否则指定载入变量的方法为GET或者POST。GET方法将变量加到URL的末尾,通常在变量较少的时候使用。POST 将变量以分隔开来的HTTP头传递变量,通常在传递变量较长时使用。
说明:
方法;在不关闭Flash播放器的情况下,播放附加的动画。通常情况下,Flash播放器播放单一的动画(SWF文件)。loadMovie方法允许你一次播放多个动画或者不经过任何HTML请求在动画之间跳转。
使用unloadMovie动作来删除有loadMovie动作载入的动画。
使用loadVariables方法来保持当前动画,同时将一些变量值更新为新的值。
播放器:
Flash 5 或以后版本
参考:
MovieClip.loadVariables
MovieClip.unloadMovie
MovieClip.loadVariables
语法:
anyMovieClip.loadVariables(url, variables);
参数:
url 外部文件的绝对或者相对URL路径。URL的主机名必须在当前动画所在的子域中。
variables 返回变量的方法。GET方法将变量加到URL的末尾,通常在变量较少的时候使用。POST 将变量以分隔开来的HTTP头传递变量,通常在传递变量较长时使用。
说明:
方法;从外部的文件中读取数据,设置动画或者MC的变量。这个外部的文件可以是CGI、ASP、PHP程序产生的文本文件,而且可以包含任何数量的变量。
这个方法可以用来将当前动画的变量值更新为新的值。
这个方法要求用URL连接的文本必须是标准的MIME格式文本:
application/x-www-urlformencoded (CGI 程序格式).
播放器:
Flash 5 或以后版本
参考:
MovieClip.loadMovie
MovieClip.localToGlobal
语法:
anyMovieClip.localToGlobal(point);
参数:
point 一个以x,y坐标为属性的对象(这里暂时叫指针对象吧),这个对象是通过产生新的generic Object对象获得的。
说明:
方法;将指针对象从MC的本地坐标系转换到主场景坐标系中。
播放器:
Flash 5 或以后版本
例子:
下面的例子将指针对象从MC本地的X,Y坐标转换到主场景坐标系中。本地的X,Y坐标是使用xmouse 和ymouse来获取的。
onClipEvent(mouseMove) {
point = new object();
point.x = _xmouse;
point.y = _ymouse;
_root.out3 = point.x + " === " + point.y;
_root.out = _root._xmouse + " === " + _root._ymouse;
localToGlobal(point);
_root.out2 = point.x + " === " + point.y;
updateAfterEvent();
}
参考:
MovieClip.globalToLocal
MovieClip.nextFrame
语法:
anyMovieClip.nextFrame();
参数:
无
说明:
方法;将MC的播放头设置在下一帧。
播放器:
Flash 5 或以后版本
MovieClip.play
语法:
anyMovieClip.play();
参数:
无
说明:
方法;拨放MC。
播放器:
Flash 5 或以后版本。
MovieClip.prevFrame
语法:
anyMovieClip.prevFrame();
参数:
无
说明:
方法;将播放头设置为前一帧并停止播放。
播放器:
Flash 5 或以后版本。
MovieClip.removeMovieClip
语法:
anyMovieClip.removeMovieClip();
参数:
无
说明:
方法;删除MC实体,该MC实体是通过duplicateMoviceclip动作,或者通过MC对象的attachMovie方法所产生的。
播放器:
Flash 5 或以后版本。
参考:
MovieClip.loadMovie
MovieClip.attachMovie
MovieClip.startDrag
语法:
anyMovieClip.startDrag([lock, left, right, top, bottom]);
参数:
lock 一个布尔值,当为(true)时,可拖动的MC将锁定在鼠标的中心;当为(false)时,可拖动的MC将锁定在用户第一次点击这个MC的位置。这个参数是一个可选参数。
left, top, right, bottom 限定拖曳MC约束范围的参数,这些参数是可选参数。
说明:
方法;允许用户拖动指定的MC。这个MC将一直保持可拖动状态直到执行了stopDrag方法,或者是将其他的MC设置为可拖动状态。在同一时间内,只有一个MC能被拖动。
播放器:
Flash 5 或以后版本
参考:
MovieClip.stopDrag
_droptarget
MovieClip.stop
语法:
anyMovieClip.stop();
参数:
无
说明:
方法;停止当前MC的播放。
播放器:
Flash 5 或以后版本。
MovieClip.stopDrag
语法:
anyMovieClip.stopDrag();
参数:
无。
说明:
方法;停止正在执行的startDrag方法。当一个MC执行startDrag方法后,这个MC将一直保持可拖动状态直到执行了stopDrag方法,或者是将其他的MC设置为可拖动状态。在同一时间内,只有一个MC能被拖动。
播放器:
Flash 5 或以后版本。
参考:
_droptarget
MovieClip.startDrag
MovieClip.swapDepths
语法:
anyMovieClip.swapDepths(depth);
anyMovieClip.swapDepths(target);
参数:
target 一个MC实体,它的深度值将和anyMovieClip指定的那个实体的深度值进行交换。两个实体必须要有相同的父MC。
depth 指定anyMovieClip所要放置的深度值。
说明:
方法;交换指定实体同参数指定的目标或者深度所在的MC之间的z值或者说层叠顺序(深度)。两个实体必须要有相同的父MC。交换实体的深度值的作用效果是将一个实体放置到另一个实体的前面或者是后面。转换深度时,如果MC正在进行过渡,则MC的过渡将停止。(经过测试,停止的是当前MC的过渡动作,并不是MC内部的过渡动作等。)
播放器:
Flash 5 或以后版本
参考:
_level
MovieClip.unloadMovie
语法:
anyMovieClip.unloadMovie();
参数:
无
说明:
方法;将用loadMovie 或者 attachMovie 方法载入的MC删除。
播放器:
Flash 5 或以后版本
参考:
MovieClip.loadMovie
MovieClip.attachMovie
Action Script事件全集
在Flash 4中,只有通过按钮才可以控制响应事件。但是Flash 5中增强了对键盘事件的响应,除了使用on命令以外,程序中还可以通过对象key动态判断某一个键是否被按下;而且,MC除了也可以响应鼠标和键盘事件,还可以响应桢事件。
on语句
进入一个按钮的Action Script编辑窗口,选择Actionson命令双击,将在右边的编辑栏出现下面的语句就是on语句的一般形式:
on (<事件>{
}
在参数栏中将出现一些复选框,可以选择的事件有8种:
Press 当鼠标在按钮上按下时激发
Release 当鼠标在按钮上松开时激发
Release Outside 当鼠标在按钮上按下并在按钮以外区域松开时激发
Roll Over 当鼠标移动到按钮上时激发
Roll Out 当鼠标从按钮上移出时激发
Drag Over 当鼠标在拖拽状态下移动到按钮上时激发
Drag Out 当鼠标在拖拽状态下从按钮上移出时激发
Key Press 当按下键盘上的某个有效键时激发
当按下某一个键的时候,会激发按钮的Key Press事件。在on语句中,以下按钮不能激发Key Press事件。
Esc、F1-F12、Ctrl、Alt、Shift、Num Lock、Caps Lock、Print Scrn、Scroll Lock、Pause、Windows专用键。除了这些键之外,也不能够响应任何的组合键。 键盘对象Key:
在Flash 5中Key中定义了一些键值常量和函数如下所示
BACKSPACE Backspace(<-)键
CAPSLOCK CapsLock键
CONTROL Ctrl键
DELETEKEY Delete(Del)键
DOWN 方向下键
END End键
ENTER Enter(回车)键
ESCAPE Esc键
getAscii 获取最后一个按下或松开的键的对应字符的Ascii码
getCode 获取最后一个被按下的键的键盘扫描码
HOME Home键
INSERT Insert(Ins)键
isDown 当指定键被按下时返回True值
isToggled 当指定键被锁定时返回True值
LEFT 方向左键
PGDN PageDown(PGDN)键
PGUP PageUp(PGUP)键
RIGHT 方向右键
SHIFT Shift键
SPACE 空格键
TAB Tab键
UP 方向上键
从以上的定义中可以看到,对象Key中提供了四个非常有用处的函数getAscii,getCode,isDown和isToggled。通过这四个函数,我们可以在动画中的任何一个位置来响应用户的按键,大大增强了程序与用户的交互性。关于如何通过对象Key来实现用户与Flash动画之间的交互,请看后面的实例。
鼠标对象Mouse
而对鼠标事件的响应只能通过按钮来实现。但是Flash 5中也增强了对鼠标的控制。对象Mouse中提供了两个函数:
Hide 隐藏鼠标指针
Show 显示鼠标指针
除了提供了一个Mouse对象之外,还提供了两个属性_xmouse和_ymouse,通过引用这两个属性,可以实时得到鼠标指针的x和y坐标。但是不能通过对它们赋值来改变数标志桢的位置。
onClipEvent语句
进入一个MC的Action Script编辑窗口,选择ActionsonClipEvent命令双击,将在右边的编辑栏出现下面的语句就是onClipEvent语句的一般形式:
onClipEvent(<事件>){…}
MC可以响应的事件一共有9种,您可以在参数栏中选择的事件如下:
load 载入MC的时候激发
enterFrame 载入MC后播放第一桢时激发
unload 卸载MC的时候激发
mouseDown 鼠标按钮按下时激发
mouseUp 鼠标按钮释放时激发
mouseMove 鼠标移动时激发
keyDown 按下键盘任意键的时候激发
keyUp 放开键盘任意键的时候激发
data 不明
利用onClipEvent语句,我们可以非常容易的实现一些特殊效果,比如鼠标轨迹跟踪,鼠标坐标的实时显示,还有MC之间的同步等。