addFrameScript with parameters by rainbow
Dec0
AS3 จะมีฟังค์ชัน addFrameScript เป็นฟังค์ชั่นของออบเจค MovieClip ใช้สำหรับให้รันฟังค์ชันที่กำหนดไว้เมื่อ movieClip รันมาถึงเฟรมที่เรากำหนดไว้
MovieClip.addFrameScript(frame_number:uint,function_to_call:Function)
frame_number – เฟรมที่เราต้องการให้ฟังค์ชั่นของเราเริ่มทำงาน มีการลำดับเฟรมแบบเริ่มต้นที่ 0
function_to_call – ฟังค์ชันที่เราต้องการให้เรียก
function helloworld ()
{
trace( “hello world!” );
}
this.addFrameScript( 1, helloworld );
แต่เราไม่สามารถใช้ตัวแปรอะไรเข้าไปในฟังค์ชันได้เลย แต่มีวิธีที่จะทำให้ส่งผ่านตัวแปรได้ คือ เอาชื่อหัวข้อไป search google ก็เจอ = =” อันนี้เป็นวิธีของ Ian Thomas delegate class.
โดยเราจะสร้าง class delegate ขึ้นมา หน้าตาจะเป็นแบบข้างล่าง
package
{public class Delegate
{
public static function create(handler:Function,…args):Function
{
return function(…innerArgs):void
{
handler.apply(this,innerArgs.concat(args));
}
}
}
}
โดย Delecate.create() จะเป็นฟังค์ชันที่จะช่วยให้เราใช้ตัวแปรใน addFrameScript ได้
วิธีใช้
public function example()
{
for (var i:int=0;i<10;i++)
{
var mc:MovieClip = new Quad() as MovieClip;
addChild(mc);
mc.addFrameScript( mc.totalFrames-1, Delegate.create(myFunction,i) );
}
}
private function myFunction(i:int):void
{
trace(i);
}
Delegate.create( function_to_call:Function, arg1, arg2, … )
unction_to_call – ฟังค์ชันที่เราต้องการให้เรียก
arg1, arg2, … – ตัวแปรที่ต้องการส่งเข้าฟังค์ชัน
Enjoy this article?
Consider subscribing to our RSS feed!
ไม่มีความเห็น
ยังไม่มีความเห็น