1.加速动画
package {
import flash.display.Sprite;
import flash.events.Event;
public class anim1 extends Sprite {
private var _sprite:Sprite = new Sprite();
private var _ax:Number = .2; //x方向加速度
private var _ay:Number = .1; //y方向加速度
private var _vx:Number = 0; //x方向速度
private var _vy:Number = 0; //y方向速度
//构造方法
public function anim1( ) {
_sprite.graphics.beginFill(0x0000ff, 100); //设置填充选项
_sprite.graphics.drawCircle(0, 0, 25); //绘制圆
//设置_sprite坐标位置
_sprite.x = 5;
_sprite.y = 10;
addChild(_sprite); //加入舞台
addEventListener(Event.ENTER_FRAME, onEnterFrame); //侦听ENTER_FRAME事件
}
public function onEnterFrame( event:Event): void {
_vx += _ax;
_vy += _ay;
_sprite.x += _vx;
_sprite.y += _vy;
}
}
}
import flash.display.Sprite;
import flash.events.Event;
public class anim1 extends Sprite {
private var _sprite:Sprite = new Sprite();
private var _ax:Number = .2; //x方向加速度
private var _ay:Number = .1; //y方向加速度
private var _vx:Number = 0; //x方向速度
private var _vy:Number = 0; //y方向速度
//构造方法
public function anim1( ) {
_sprite.graphics.beginFill(0x0000ff, 100); //设置填充选项
_sprite.graphics.drawCircle(0, 0, 25); //绘制圆
//设置_sprite坐标位置
_sprite.x = 5;
_sprite.y = 10;
addChild(_sprite); //加入舞台
addEventListener(Event.ENTER_FRAME, onEnterFrame); //侦听ENTER_FRAME事件
}
public function onEnterFrame( event:Event): void {
_vx += _ax;
_vy += _ay;
_sprite.x += _vx;
_sprite.y += _vy;
}
}
}
2.根据某一方向的变化计算2个分量值:
package {
import flash.display.Sprite;
import flash.events.Event;
public class anim2 extends Sprite {
private var _sprite:Sprite = new Sprite();
private var _ax:Number;
private var _ay:Number;
private var _vx:Number = 0;
private var _vy:Number = 0;
private var angle:Number = 45;
private var accel:Number = .5;
public function anim2() {
_sprite.graphics.beginFill(0x0000ff, 100);
_sprite.graphics.drawCircle(0, 0, 25);
_sprite.x = 5;
_sprite.y = 10;
addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function onEnterFrame( event:Event): void {
var radians:Number = angle * Math.PI / 180; //角度转化弧度
_ax = Math.cos(radians) * accel; //根据梯度(?不知道是不是这个概念,就是那个斜边长)计算水平方向加速度
_ay = Math.sin(radians) * accel;
_vx += _ax;
_vy += _ay;
_sprite.x += _vx;
_sprite.y += _vy;
}
}
}
import flash.display.Sprite;
import flash.events.Event;
public class anim2 extends Sprite {
private var _sprite:Sprite = new Sprite();
private var _ax:Number;
private var _ay:Number;
private var _vx:Number = 0;
private var _vy:Number = 0;
private var angle:Number = 45;
private var accel:Number = .5;
public function anim2() {
_sprite.graphics.beginFill(0x0000ff, 100);
_sprite.graphics.drawCircle(0, 0, 25);
_sprite.x = 5;
_sprite.y = 10;
addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function onEnterFrame( event:Event): void {
var radians:Number = angle * Math.PI / 180; //角度转化弧度
_ax = Math.cos(radians) * accel; //根据梯度(?不知道是不是这个概念,就是那个斜边长)计算水平方向加速度
_ay = Math.sin(radians) * accel;
_vx += _ax;
_vy += _ay;
_sprite.x += _vx;
_sprite.y += _vy;
}
}
}
当然除了onEnterFrame也可以用timer定时器事件:
_timer = new Timer(3);
_timer.addEventListener("timer", onTimer);
_timer.start();
本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/162249,如需转载请自行联系原作者