点击浏览该文件第十讲:初识onClipEvent
学习了前面的九讲,我想你对AS应该有个初步的认识了,对基本的动画控制应该不成问题了,说不定已经可以做些特效了:)
那些基础应该牢牢掌握,那些是你成为高手的基石!从明天开始我们将更深一步的学习AS,也就是应该从入门向初级晋级。如果前面的基础还没有掌握好的,请复习做练习。
今天我们这一讲是晋级的过度,目的就是基本认识:onClipEvent
相信每个高手都体会到它的灵活,强大。至少我是这么认为(虽然我还不算是高手),每次写AS的时候我总会想到它。
呵呵,不要被吓坏,它并不难,和按扭很象,我们先来做个介绍。
onClipEvent(movieEvent){ //触发事件关键字,表示要捕获的事件
statements; //这个我们见过,要执行的代码块
}
是不是和按扭很象?只不是是on换成了onClipEvent
onClipEvent 语句可以捕获当前 MovieClip 中的指定事件,并执行相应的程序块。参数(movieEvent)指定了要捕获的事件,可以捕获下列事件:(不用记,熟悉一下就可以的)
load:当前 MovieClip 被装入并准备显示之前触发该事件
unload:当前 MovieClip 被卸载准备消失之前触发该事件
enterFrame:当前 MovieClip 每次计算帧上的内容时触发该事件
mouseMove:当鼠标移动时触发该事件
mouseDown:当鼠标左键按下时触发该事件
mouseUp:当鼠标左键抬起时触发该事件
keyDown:当键盘按键被按下时触发该事件
keyUp:当键盘按键被按下后松开时触发该事件
data:当前 MovieClip 接收到新数据时触发该事件
在这么多的事件中我们只讲两个,是最常用的:load和enterFrame;
load:当前 MovieClip 被装入并准备显示之前触发该事件
这一句不知道你有没有明白,如果不理解可以先这样简单的记下,如果是load事件,代码块就执行一次。
enterFrame:当前 MovieClip 每次计算帧上的内容时触发该事件
这个的意思就是如果是enterFrame事件,代码块一直执行,也就是重复执行。
还要再介绍一个简单的getTimer();它的作用就是:可以获取当前 Flash 动画已经播放了多少毫秒的数据信息。
也许你还是不明白,那下面我们来看例题,请下载源文件。
点击浏览该文件先看场景中,有两个动态的文本,点文本在属性中可以看到他们的名字分别是mload,menter。
场景中还有一个小白点,那是一个空影片。具体的做法就是按Ctrl+F8建一个影片mc,把它拖入场景中就可以了。
下面点这个白点(空影片),点右键——>action可以看到代码(和看按扭上的代码方法是一样的):
onClipEvent(load){ //当影片载入时执行下面代码
_root.mload=getTimer(); //把当前影片播放的时间(毫秒),赋值给场景中的mload文本
}
onClipEvent(enterFrame){ //只要播放帧上有该影片就执行代码
_root.menter=getTimer();//把当前影片播放的时间(毫秒),赋值给场景中的mload文本
}
观看效果,可以看到load时间的数字是不变的,而enterFrame一直在变化。
这个刚开始就是有点不好理解,不过没关系,用多了自然就熟悉了。
下面看今天的作业:做一个读秒的计数器,从10数到1然后停止。用判断语句if还有今天的onClipEvent,getTimer();
提示:getTimer()/1000这样单位就是秒,int(getTimer()/1000)这样得到就是整数
第十一讲
点击浏览该文件 第十一讲:onClipEvent结合按扭做导航条
以后我们的学习和应用会结合在一起,如果你有觉得好的效果可以推荐一下,我们可以拿来做教材。:)
今天我们来运用学过的知识做一个导航条,这是在闪大一个朋友问到的效果,今天给大家做个讲解,希望通过这个例题你能多了解一下onClipEvent,也顺便了解一点编程的思路。
请下载文件,打开先预览。呵呵,看到效果了吗?还不错吧。
点击浏览该文件第一次看到这个动画时,首先注意到了这是按扭的rollOver(鼠标划过按扭)事件激发的,影片的移动由onClipEvent控制,而既然影片有移动,那就应该有初位置,和末位置。
呵呵,你也这样想到了吗?如果没有,也没有关系,那是你做的少,不熟悉的关系。以后你会很强的,下面我们来讲具体是怎么做的。
先看库,里面有一个按扭,一个影片,都很简单。
把按扭拉入场景第一层的第一帧,我拖了四个按扭(你可以做更多),把按扭分别命名b1,b2,b3,b4。
然后再在每个按扭上面写:
on(rollOver){//当鼠标划过按扭
_root.newx=_root.bn._x; //n=1,2,3,4 把当前按扭的横坐标赋值给变量newx;
}
代码中的bn一定要和当前按扭的名字相对应。
把影片mc拖到第二层的第一帧,写上代码:
onClipEvent(load){//当影片装载时,执行代码
_root.newx=this._x; //把当前影片的横坐标赋值给变量newx,这是为了保证影片开始是静止的
}
onClipEvent(enterFrame){//当播放帧上有该影片时,执行代码
this._x=this._x+(_root.newx-this._x)/4;//这个是数学公式,变量newx是最终位置,影片不断向这个位置移动。最好的理解办法就是用数字带进去理解一下。
}
呵呵,这么快就讲完了,还没有尽兴。再说一点别的。
_root.newx你一定会问,变量前面newx为什么要加_root?这里简单解释一下,如果没有_root那么变量newx只在局部有效,也就是说,按扭上面的改变对影片中变量不起作用,自然没有办法控制了。加上_root它的范围是整个动画。
这个导航条就是靠按扭的rollOver事件来改变变量,确定影片的末位置,然后有影片代码控制移动。
今天的作业:独立做一个类似的导航条,不过是竖向的,按扭用点击事件release来激发。
