Flash / Flex / ActionScript/Animation/Timer
Содержание
- 1 Change text value in a TextField in a timer
- 2 Creating a Timer
- 3 Creating Symbols Within Flash CS3
- 4 Defers the call to the deferredMethod( ) method for five seconds:
- 5 draws a single line with a random stroke style every 250 milliseconds. It uses clear( ) to erase the previously drawn line.
- 6 Post-Event Updates for Timer Events
- 7 Repeating a Task over Time
- 8 Two timers are set, one for a square sprite and one for a circle sprite
Change text value in a TextField in a timer
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class Main extends Sprite {
var timer:Timer = new Timer(1000);
private var _text:TextField;
private var _start:uint;
public function Main( ) {
_start = 0;
_text = new TextField( );
addChild(_text);
timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.start( );
}
private function onTimer(event:TimerEvent):void {
_text.text = (timer.currentCount - _start) + " milliseconds";
}
}
}
Creating a Timer
package Main{
import flash.display.Sprite;
import flash.utils.*;
import flash.events.*;
public class Main extends Sprite {
public static const TIMER_DELAY:Number = 1 * 1000;
public var timer:Timer;
public function Main() {
timer = new Timer(TIMER_DELAY, 10);
}
}
}
Creating Symbols Within Flash CS3
package {
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class Main extends Sprite {
var timer:Timer;
public function Main () {
super();
timer = new Timer(1000);
timer.addEventListener(TimerEvent.TIMER, bark);
timer.start();
}
public function bark(event:TimerEvent = null):void {
trace("Woof!");
}
}
}
Defers the call to the deferredMethod( ) method for five seconds:
package{
import flash.display.Sprite;
import flash.utils.*;
import flash.events.*;
public class Main extends Sprite{
public function Main(){
var timer:Timer = new Timer(5000, 1);
timer.addEventListener(TimerEvent.TIMER, deferredMethod);
timer.start( );
}
function deferredMethod(event:TimerEvent):void {
trace("on timer");
}
}
}
draws a single line with a random stroke style every 250 milliseconds. It uses clear( ) to erase the previously drawn line.
package {
import flash.display.*;
import flash.utils.*;
import flash.events.*;
public class Main extends Sprite {
private var s:Shape;
public function Main( ) {
s = new Shape( );
addChild(s);
var t:Timer = new Timer(250);
t.addEventListener(TimerEvent.TIMER, timerListener);
t.start( );
}
private function timerListener (e:TimerEvent):void {
s.graphics.clear( );
s.graphics.lineStyle(random(1, 10), random(0, 0xFFFFFF));
s.graphics.moveTo(random(0, 550), random(0, 400));
s.graphics.lineTo(random(0, 550), random(0, 400));
}
public function random (minVal:int, maxVal:int):int {
return minVal + Math.floor(Math.random( ) * (maxVal + 1 - minVal));
}
}
}
Post-Event Updates for Timer Events
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class Main extends Sprite {
public function Main( ) {
stage.frameRate = 1;
var timer:Timer = new Timer(100, 0);
timer.start( );
timer.addEventListener(TimerEvent.TIMER, timerListener);
}
private function timerListener (e:TimerEvent):void {
var rect:Sprite = new Sprite( );
rect.graphics.lineStyle(1);
rect.graphics.beginFill(0x0000FF);
rect.graphics.drawRect(0, 0, 150, 75);
rect.x = Math.floor(Math.random( )*stage.stageWidth);
rect.y = Math.floor(Math.random( )*stage.stageHeight);
addChild(rect);
e.updateAfterEvent( )
}
}
}
Repeating a Task over Time
package {
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class Main extends Sprite {
private var _PreviousTime:Number = 0;
public function Main( ) {
var tTimer:Timer = new Timer(500, 10);
tTimer.addEventListener(TimerEvent.TIMER, onTimer);
tTimer.start( );
}
private function onTimer(event:TimerEvent):void {
trace(flash.utils.getTimer( ) - _PreviousTime);
_PreviousTime = flash.utils.getTimer( );
}
}
}
Two timers are set, one for a square sprite and one for a circle sprite
package {
import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;
public class Main extends Sprite {
private var _square:Sprite;
private var _circle:Sprite;
public function Main( ) {
_square = new Sprite( );
_square.graphics.beginFill(0xff0000);
_square.graphics.drawRect(0, 0, 100, 100);
_square.graphics.endFill( );
addChild(_square);
_square.x = 100;
_square.y = 50;
_circle = new Sprite( );
_circle.graphics.beginFill(0x0000ff);
_circle.graphics.drawCircle(50, 50, 50);
_circle.graphics.endFill( );
addChild(_circle);
_circle.x = 100;
_circle.y = 200;
var squareTimer:Timer = new Timer(50, 0);
squareTimer.addEventListener(TimerEvent.TIMER, onSquareTimer);
squareTimer.start( );
var circleTimer:Timer = new Timer(100, 0);
circleTimer.addEventListener(TimerEvent.TIMER, onCircleTimer);
circleTimer.start( );
}
private function onSquareTimer(event:TimerEvent):void {
_square.x++;
}
private function onCircleTimer(event:TimerEvent):void {
_circle.x++;
}
}
}