flash as3.0 入门

2026/4/24 8:59:24

**10--用计时器控制影片的运动.txt ***** **

FLASHAS3.0—用计时器控制影片的运动(12) 2.3.2 用计时器控制影片的运动 计时器,就好比我们使用的钟表。你还可以创建一个计时器,每秒用它来调用一个函 数。当你声明一个计时器后也就创建了一个 Timer 对象,你需要设置时间间隔的毫秒数,还 有循环次数,为 0 的话就是循环无数次。

* 下面代码创建一个 Timer 对象,每隔 1S 就触发调用一次 timerFunction 函数,源代码 如下:

* // 创建一个 Timer 对象,每秒调用一次 timerFunction 函数 * var myTimer:Timer = new Timer(1000);

* myTimer.addEventListener(TimerEvent.TIMER, timerFunction); * // 函数内为画一黑色填充圆点

* function timerFunction(event:TimerEvent) * { * this.graphics.beginFill(0x000000);

* //currentCount 为计时器从 0 开始后触发的总次数。 如果已重置了计 时器,则 只会计入重置后的触发次数。

* this.graphics.drawCircle(event.target.currentCount*10,100,4); * }

* // 计时开始 * myTimer.start();

* 上面代码源文件见 UsingTimers.fla。 *

* 另外,你还可以用计时器来完成上节用帧频事件做的动画,全部代码如下:

* var hero:Hero = new Hero(); * hero.x = 100; * hero.y = 200; * addChild(hero);

* var heroTimer:Timer = new Timer(80);

* heroTimer.addEventListener(TimerEvent.TIMER, animateHero); * function animateHero(event:Event) * {

* hero.x += 7;

* if (hero.currentFrame == 8) * {

* hero.gotoAndStop(2); * } else * {

* hero.gotoAndStop(hero.currentFrame+1); * } * }

* heroTimer.start();

* 我们发现,调用函数内部的代码没变,唯一不同的就是侦听器不一样。前面为帧频侦 听, 这里为计时器侦听。 当你测试影片时, 会发现这个人物运动的速度和上面的那么差不多。 如果你再重新设置一下舞台的帧频,比如改为 6 或者 60,会发现该影片运动的速度没有明 显的变化。

* 另: 具体区别就是 ENTER_FRAME 是按帧发生的,Timer 是你可以自定义的时间和循 环次数. ****** *

**11--基于时间的帧频动画.txt ***** **

FLASHAS3.0—基于时间的帧频动画 (13) 2.3.3 基于时间的帧频动画 该方法的原理就是, 首先声明一个整型变量来存储初始化 flash player 后经过的时间,

然后再用侦听事件来调用侦听函数, 在侦听函数内计算出当前帧与上一帧的时间差, 再乘以 一个比例系数应用到影片剪辑的坐标,从而改变该对象的运动。

* 首先, 现在舞台上绘制一个小球, 转换为影片剪辑, 并把它从库中拖放到舞台的左边, 实例名称为 ball。

* 打开主时间轴->动作,在脚本编辑区内,输入下面的代码。先声明

一个变量来存储 初始化 flash player 后经过的时间,该时间以毫秒为单位的,再通过 getTimer()函数,把返回 的时间传递給刚才声明的变量 lastTime。

* var lastTime:int=getTimer() * // trace(\

* 然后, 我们用 ENTER_FRAME 事件来侦听, 并声明一个 animateBall 侦听函数来调用。

* addEventListener(Event.ENTER_FRAME, animateBall);

* 在下面的这个函数内,第一行代码:先用 getTimer()函数得到系统当前帧的时间, 并把该时间与上一帧的时间差赋值給一个整型变量 timeDiff;第二行代码:更新 lastTime 时 间,供下一次侦听函数被调用时使用;第三行代码:把该时间差乘以一个 0.1 系数作为小球 横坐标的变化位置。比如,先在舞台属性中设置帧频为 10,也就是说,影片在运行时,每 帧所用的时间大概是 100ms, 比如 flash player 初始化经过的时间为 5ms, lastTime 初始值 则 就为 5; 当运行到下一帧时将触发侦听器调用 animateBall 函数, 也就是说, 其中间隔了 100ms, 即 timeDiff 为 100ms,更新后的 lastTime 为 105ms,下面小球水平位置增加了 10 像素。也 就是说,每经过一秒钟小球的水平位置就向右移动了 100 像素。 * function animateBall(event:Event) { * // trace(\* var timeDiff:int = getTimer()-lastTime;


flash as3.0 入门.doc 将本文的Word文档下载到电脑
搜索更多关于: flash as3.0 入门 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219