【ActionScript】ENTER_FRAME事件与组件的旋转

利用ActionScript的ENTER_FRAME事件同样可以达到《【ActionScript】定时器,修改组件的透明度》(点击打开链接)的效果,

以一个蓝色正方形旋转360度一周,之后自动停止,来说明这个问题。

虽然下面这个简单动画同样可以利用补间来轻松实现,但是希望通过这个例子来说明ActionScript3.0如何控制组件旋转与ENTER_FRAME事件。

一、基本布局

基本布局与《【ActionScript】定时器,修改组件的透明度》(点击打开链接)一模一样,同样是布置一个含有蓝色正方形的影片剪辑。

1、通过Ctrk+F8,或者插入->新建原件,新建一个名为square的影片剪辑

2、在影片剪辑中通过矩形工具,设置其没有笔触,否则一会儿用选择工具很难选取,在影片剪辑中任意拖出一个矩形。之后使用选择工具,选择这个矩形,如图设置其位置于大小,X:-100,Y:-100,分别为,宽、高200px的相反数的一半。之后点左上角,切换回场景1。

3、在舞台中,按F11打开库,把库中的square影片剪辑拖到舞台,之后右键第1关键帧,打开动作面板,开始脚本的写作。

二、脚本编程

关键是这里的脚本编程,对第1帧写入如下的脚本:

var i=0;
//定义一个函数setRotate
var setRotate=function(){
	if(i<360){//影片剪辑,每旋转1度,计算器i就加1
		square.rotation+=1;
		i++;
	}
	else{//直到i等于360停止这个函数的运行
		removeEventListener(Event.ENTER_FRAME, setRotate);
	}
}
addEventListener(Event.ENTER_FRAME, setRotate);

这里addEventListener(Event.ENTER_FRAME, setRotate);的意思是,一进入该帧,则执行setRotate这个函数直到遇到removeEventListener(Event.ENTER_FRAME, setRotate);才进入下一帧。由于这个动画仅有一帧,因此,跑完这个setRotate就结束。

那么,执行setRotate这个函数的时间间隔是多少呢?

这里,时间间隔等于你帧的时间,也就是FPS,帧每秒。

这个数值可以通过选择工具点击任意空白处,通过属性面板进行设置,如下图:

默认的FPS是24。也就是说,时间间隔是1/24s执行一次setRotate。这也是每1/24s读取一帧。如果你把这个数值调成1,你可以观察到这个正方形每1秒旋转1度。当然Flash也同样会每秒只读1帧。

对比与Flash中的定时器,这个ENTER_FRAME事件无需引入其它包,简单实用。注意addEventListener与removeEventListener对应即可,但是其运行间隔与FPS关联起来,有一定的耦合度。

时间: 2024-11-05 14:49:24

【ActionScript】ENTER_FRAME事件与组件的旋转的相关文章

Sprite/MovieClip的Enter_Frame事件,不受addChild/removeChild影响

简单点讲:Sprite或MovieClip对象一旦为其添加了Enter_Frame事件监听,对应的Enter_Frame处理函数将会马上被调用,并一直执行下去(不管你是否将其addChild到显示列表,或者将其从显示列表removeChild),直到该对象removeEventListener相应的监听器为止. 同样:MovieClip一旦被new出来,就会自动播放(在未用任何代码stop()的前提下),不管你是否将其addChild或removeChild 注:其它事件也类似,在AS3的世界中

vue30-单一事件管理组件通信: vuex

------------------------------------------------------ 可以单一事件管理组件通信: vuex var Event=new Vue(); Event.$emit(事件名称, 数据) Event.$on(事件名称,function(data){ //data }.bind(this)); <!DOCTYPE html> <html lang="en"> <head> <meta charset=

vue自定义事件将组件内的数据传输到实例中去使用

vue自定义事件将组件内的数据传输到实例中去使用 <body> <div id="app"> <h1 style="color:deeppink">{{ outer_title }}</h1> //③给实例绑定一个方法 <hello :reader="new_msg"  v-on:chang_event="chang_tit"></hello> </

Vue2-单一事件管理组件通信

对上篇文字[vue2.0 中#$emit,$on的使用详解]的实例运用: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <title>Vue2-单一事件管理组件通信</title> 6 <script src="vue.js"></script> 7

DirectX11 学习笔记2 - 添加按键事件 实现视角平移 旋转

在上一个程序的基础上.在基类D3DBase添加一个摄像机函数 //摄像机 void D3DBase::setCamera() { //按键事件 //如果A,S,D,W,Q,E,Z,X,C键按下,移动摄像机 if(GetAsyncKeyState('W') & 0x8000) //前 vZ+=0.001f; if(GetAsyncKeyState('S') & 0x8000) //后 vZ-=0.001f; if(GetAsyncKeyState('A') & 0x8000) //左

DirectX11 学习笔记2 - 加入关键事件 实现视角转换 旋转

上的程序的的基础上.在基类D3DBase添加摄像头功能 //录影机 void D3DBase::setCamera() { //关键事件 //假定A,S,D,W,Q,E,Z,X,C键被按下.动摄像机 if(GetAsyncKeyState('W') & 0x8000) //前 vZ+=0.001f; if(GetAsyncKeyState('S') & 0x8000) //后 vZ-=0.001f; if(GetAsyncKeyState('A') & 0x8000) //左 vX

vue自定义事件 子组件把数据传出去

每个 Vue 实例都实现了事件接口(Events interface),即: 使用 $on(eventName) 监听事件 使用 $emit(eventName) 触发事件 1.使用v-on绑定自定义事件 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6 <s

Vue:渲染、指令、事件、组件、Props、Slots

如果要我用一句话描述使用 Vue 的经历,我可能会说“它如此合乎常理”或者“它提供给我需要的工具,而且没有妨碍我的工作”.每当学习 Vue 的时候,我都很高兴,因为很有意义,而且很优雅. 以上是我对 Vue 的介绍.在我第一次学习 Vue 的时候,我就想要这样的文章 我喜欢 Vue 的一点是它吸取了其它框架的优秀之处,并有条不紊的将它们组合在一起. 具有响应式组件化的虚拟 DOM 只提供视图层, props 和 类 Redux 状态管理与 React 类似. 条件渲染和服务与 Angular 类

Vue:渲染、指令、事件、组件、Props

如果要我用一句话描述使用 Vue 的经历,我可能会说"它如此合乎常理"或者"它提供给我需要的工具,而且没有妨碍我的工作".每当学习 Vue 的时候,我都很高兴,因为很有意义,而且很优雅. 以上是我对 Vue 的介绍.在我第一次学习 Vue 的时候,我就想要这样的文章 我喜欢 Vue 的一点是它吸取了其它框架的优秀之处,并有条不紊的将它们组合在一起. 具有响应式组件化的虚拟 DOM 只提供视图层, props 和 类 Redux 状态管理与 React 类似. 条件渲