Cách tạo màu nhạt dần theo cách như ñã làm với chuyển ñộng ở trên.[r]
(1)7
_sprite = new Sprite( );
_sprite.graphics.beginFill(0x0000ff, 100); _sprite.graphics.drawCircle(0, 0, 25); _sprite.graphics.endFill( );
_sprite.x = 0; _sprite.y = 100; addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void {
var ax:Number = (_targetX - _sprite.x) * _k; _vx += ax;
_sprite.x += _vx;
_sprite.y += _vy;
}
ðể cho vật chuyển ñộng theo hướng ta cần cho vy thay ñổi theo ñược import flash.display.Sprite;
import flash.events.Event;
var _sprite:Sprite; var _vx:Number = 20; var _vy:Number = 0; var _k:Number = 1;
var _targetX:Number = 200; var _targetY:Number = 100;
_sprite = new Sprite( );
_sprite.graphics.beginFill(0x0000ff, 100); _sprite.graphics.drawCircle(0, 0, 25); _sprite.graphics.endFill( );
_sprite.x = 0; _sprite.y = 0; addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void {
var ax:Number = (_targetX - _sprite.x) * _k; var ay:Number = (_targetY - _sprite.y) * _k; _vx += ax;
_vy += ay;
(2)8 _sprite.y += _vy;
}
Muốn vật dao ñộng tắt dần ta thay đổi vx , vy để thay đổi vị trí vật lúc gần vị trí cân ñược
import flash.display.Sprite; import flash.events.Event;
var _sprite:Sprite; var _vx:Number = 20; var _vy:Number = 0; var _k:Number = 1; var _damp:Number = 94; var _targetX:Number = 200; var _targetY:Number = 100;
_sprite = new Sprite( );
_sprite.graphics.beginFill(0x0000ff, 100); _sprite.graphics.drawCircle(0, 0, 25); _sprite.graphics.endFill( );
_sprite.x = 0; _sprite.y = 0; addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void {
var ax:Number = (_targetX - _sprite.x) * _k; var ay:Number = (_targetY - _sprite.y) * _k; _vx += ax;
_vy += ay;
_sprite.x += _vx; _sprite.y += _vy; _vx *= _damp; _vy *= _damp; }
Có thể dùng hàm tốn học ñể tạo chuyển ñộng theo ñường cong xác định đường trịn , ellip ,
Các ví dụ sau minh hoạ số chuyển động có sử dụng hàm tốn học Ví dụ chuyển ñộng dao ñộng:
package {
import flash.display.Sprite; import flash.events.Event;
(3)9 private var _sprite:Sprite; private var _angle:Number = 0; private var _radius:Number = 100;
public function AS3CB( ) { _sprite = new Sprite( );
_sprite.graphics.beginFill(0x0000ff, 100); _sprite.graphics.drawCircle(0, 0, 25); _sprite.graphics.endFill( );
_sprite.x = 0; _sprite.y = 100; addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame); }
public function onEnterFrame(event:Event):void { _sprite.x = 200 + Math.sin(_angle) * _radius; _angle += 05;
} } }
Ví dụ chuyển ñộng theo ellip:
import flash.display.Sprite; import flash.events.Event;
var _sprite:Sprite; var _angle:Number = 0; var _radius:Number =200;
_sprite = new Sprite( );
_sprite.graphics.beginFill(0x0000ff, 100); _sprite.graphics.drawCircle(0, 0, 25); _sprite.graphics.endFill( );
_sprite.x = 0; _sprite.y = 100; addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void {
_sprite.x = 200 + Math.sin(_angle) * _radius; _sprite.y = 200 + 0.2*Math.cos(_angle) * _radius; _angle += 1;
}
Ví dụ chuyển động theo đường trịn:
(4)10
var _sprite:Sprite; var _angle:Number = 0; var _radius:Number = 100;
_sprite = new Sprite( );
_sprite.graphics.beginFill(0x0000ff, 100); _sprite.graphics.drawCircle(0, 0, 25); _sprite.graphics.endFill( );
_sprite.x = 0; _sprite.y = 100; addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void {
_sprite.x = 200 + Math.sin(_angle) * _radius; _sprite.y = 200 + Math.cos(_angle) * _radius;
_angle += 05;
}
Ví dụ : Viên bi di chuyển đường trịn chuột di chuyển: import flash.display.Sprite;
import flash.events.Event;
var _sprite:Sprite;
_sprite = new Sprite( );
_sprite.graphics.beginFill(0xffffff, 100); _sprite.graphics.drawCircle(0, 0, 25); _sprite.graphics.endFill( );
_sprite.graphics.beginFill(0x000000, 100); _sprite.graphics.drawCircle(20, 0, 5); _sprite.graphics.endFill( );
_sprite.x = 100; _sprite.y = 100; addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void { var dx:Number = mouseX - _sprite.x; var dy:Number = mouseY - _sprite.y;
(5)11 Xoay hình : dùng thuộc tính rotation
Ví dụ :
import flash.display.Sprite; import flash.events.Event;
var _sprite:Sprite; var _vr:Number = 4;
_sprite = new Sprite( );
_sprite.graphics.beginFill(0xffffff, 100); _sprite.graphics.drawRect(-50, -20, 100, 40); _sprite.graphics.endFill( );
_sprite.x = 100; _sprite.y = 100; addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void { _sprite.rotation += _vr;
}
Ví dụ : ví dụ sau ta tạo hình vng với màu cho sẵn màu nhạt dần chạy chương trình Nếu kích vào hình vng có màu màu ñó nhạt dần Cách tạo màu nhạt dần theo cách ñã làm với chuyển ñộng
import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.ColorTransform;
var _sprite:Sprite;
var _red1:Number = 1; var _green1:Number = 0; var _blue1:Number = 0;
var _red2:Number = 0; var _green2:Number = 5; var _blue2:Number = 1;
var _easingSpeed:Number = 0.05;
(6)12 _sprite = new Sprite( );
_sprite.graphics.beginFill(0xffffff, 100); _sprite.graphics.drawRect(-50, -50, 100, 100); _sprite.graphics.endFill( );
_sprite.x = 100; _sprite.y = 100; addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame); addEventListener(MouseEvent.CLICK, onClick);
function onEnterFrame(event:Event):void { _red1 += (_red2 - _red1) * _easingSpeed;
_green1 += (_green2 - _green1) * _easingSpeed; _blue1 += (_blue2 - _blue1) * _easingSpeed; _sprite.transform.colorTransform =
new ColorTransform(_red1, _green1, _blue1); }
function onClick(event:MouseEvent):void { _red2 = Math.random( );
_green2 = Math.random( ); _blue2 = Math.random( ); }
Ví dụ : ví dụ sau ta tạo hình vng với màu trắng áp dụng nguyên tắc phần chuyển ñộng ñể tạo hiệu ứng zoom hình kích vào hình vng
import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent;
var _sprite:Sprite; var _k:Number = 0.1; var _damp:Number = 0.9; var _scaleVel:Number = 0; var _targetScale:Number = 1;
_sprite = new Sprite( );
_sprite.graphics.beginFill(0xffffff, 100); _sprite.graphics.drawRect(-50, -50, 100, 100); _sprite.graphics.endFill( );
_sprite.x = 100; _sprite.y = 100; addChild(_sprite);
addEventListener(Event.ENTER_FRAME, onEnterFrame); _sprite.addEventListener(MouseEvent.CLICK, onClick)
(7)
13
_scaleVel += (_targetScale - _sprite.scaleX) * _k _sprite.scaleX += _scaleVel;
_sprite.scaleY = _sprite.scaleX; _scaleVel *= _damp;
}
function onClick(event:MouseEvent):void { _targetScale = Math.random( ) * - 5; }