
น้าแอ๊ด
---------
Tweener = Library ฟรีตัวนึงครับ ที่ช่วยเรื่องเกี่ยวกับ Transition ของวัตถุหลายชนิด เช่น การเคลื่อนที่, เปลี่ยนสี, เปลี่ยนความดังเสียง ฯลฯ โดยที่เราไม่ต้องออกเเรงเขียนคำสั่งยาวๆ ด้วยตัวเอง อะตัวอย่างครับเช่น
สมมติว่ามี Movie Clip ตัวหนึ่งบน Stage ตั้งชื่อ Instance name ว่า _mc ให้
- เคลื่อนที่จากจุด 0,0 ไปยังจุด 10,300 แบบมีความหน่วง* ภายในเวลา 1 วินาที
(*ความหน่วง หมายถึง การที่วัตถุเคลื่อนที่ด้วยความเร่งติดลบ หรือก็คือ เหมือนเราขับรถมา แล้วเหยียบเบรกนั่นแหละครับ)วิธีเดิมเนี่ย เราก็ต้องทำแบบนี้ครับ
(AS1.0, AS2.0)
_mc._x = 0;
_mc._y = 0;
_mc.onEnterFrame = function(){
this._x += (10-this._x)/8;
this._y += (300-this._y)/8;
if(Math.abs(this._x - 10) <= 0.5 && Math.abs(this._y - 300) <= 0.5){
delete this.onEnterFrame;
}
};
(AS3.0)
_mc.x = 0;
_mc.y = 0;
_mc.addEventListener(Event.ENTER_FRAME, onMoving);
function onMoving(evt:Event):void{
var _mc:MovieClip = evt.target as MovieClip;
_mc.x += (10-_mc.x)/8;
_mc.y += (300-_mc.y)/8;
if(Math.abs(_mc.x-10) <= 0.5 && Math.abs(_mc.y-300) <= 0.5){
_mc.removeEventListener(Event.ENTER_FRAME, onMoving);
}
}
ยาว ยาก มึน
Tweener เลยเป็นพระเอกขี่ม้าขาวมาช่วยครับ
(โหลดที่
http://code.google.com/p/tweener/ )
วิธีใหม่AS1.0 => ให้โหลดตัว mc_tween2 มาใช้ครับ [
http://hosted.zeh.com.br/mctween/ ]
(คนทำคนเดียวกันครับ)
#include "mc_tween2.as"
_mc._x = 0;
_mc._y = 0;
_mc.slideTo(10,300,1,"easeOutExpo");
AS2.0 => คือ AS1.0 ที่เขียนเป็นคลาสครับ
import caurina.transitions.Tweener;
_mc._x = 0;
_mc._y = 0;
Tweener.addTween(_mc, {_x: 10, _y: 300, time: 1, transition: "easeOutExpo"});
AS3.0import caurina.transitions.Tweener;
_mc.x = 0;
_mc.y = 0;
Tweener.addTween(_mc, {x: 10, y: 300, time: 1, transition: "easeOutExpo"});
อูย.. สั้นกว่าเห็นๆ (เหลือบรรทัดเดียวเองครับ)
แล้วมันสะดวกตรงที่ เราไม่ต้องไปจัดการเรื่องการ enterFrame ที่ฟุ่มเฟือยเลยครับ
ตัว Tweener จะจัดการให้เองเสร็จสรรพ ไม่ต้องห่วงว่า enterFrame เยอะแล้วมันจะอืดครับ
สะดวกอีกอย่างตรงที่ เราสามารถตรวจเช็คว่ามันเคลื่อนที่เสร็จรึยังได้ด้วยนะ
ลองอ่าน Document เค้าดูนะครับ [
http://hosted.zeh.com.br/tweener/docs/en-us/ ]

----------
แถมให้ครับ
วิธีการ Transition เสียง -- การทำเสียงค่อยๆ เบาลงด้วย Tweener
สมมติว่า มีเสียงใน Library ตั้ง Linkage ว่า sound1 นะครับ
(AS1.0)
#include "mc_tween2.as"
var s = new Sound();
s.attachSound("sound1");
s.start();
s.volumeTo(0, 1); //ค่อยๆ เบาเสียงจากดังสุด (100) ไปจนไม่มีเสียง ภายในเวลา 1 วินาที
(AS2.0)
import caurina.transitions.Tweener;
import caurina.transitions.properties.SoundShortcuts;
SoundShortcuts.init();
var s:Sound = new Sound();
s.attachSound("sound1");
s.start();
Tweener.addTween(s, {_sound_volume: 0, time: 1});
(AS3.0)
import caurina.transitions.Tweener;
import caurina.transitions.properties.SoundShortcuts;
import flash.media.SoundChannel;
SoundShortcuts.init();
var s:Sound = new sound1();
var sc:SoundChannel = s.play();
Tweener.addTweener(sc, {_sound_volume: 0, time: 1});
-----------
ยังไงถ้ามีปัญหา ก็ถามมาได้เลยนะครับ
