วิธีสร้าง Instance จาก class ใน SWC โดยใช้ตัวแปรเรียกชื่อได้ by

31
Mar
0

โดยปกติแล้วเวลาเราจะเรียกใช้ MovieClip ต่างๆจาก swc เราจะใช้การตั้งชื่อแล้ว new ตัวนั้นๆเช่น


var mini1:MovieClip = new minigame_A;
var mini2:MovieClip = new minigame_B;
var mini3:MovieClip = new minigame_C;

ดังตัวอย่าง ถ้าเราต้องการสร้างตัวแปรในเวลารันไทม์โดยที่เรารู้ค่าๆหนึ่ง ซึ่งเป็น A, B หรือ C เราก็ต้องสร้าง if ต่างๆเช่น


//type เป็นตัวแปรชนิดของเกมที่ได้มาเป็น A, B หรือ C
if(type=="A")
var mini:MovieClip = new minigame_A;
else if(type=="B")
var mini:MovieClip = new minigame_B;
else if(type=="C")
var mini:MovieClip = new minigame_C;

โดยในถ้าเราใช้ฟังก์ชั่น createInstance ดังนี้เราสามารถสร้างได้โดยการทำการต่อสตริงชื่อของคลาสที่เราต้องการสร้างได้ โดยหน้าตาของฟังก์ชั่นเป็นดังนี้


public function createInstance(className:String):MovieClip {
var dynamicClass:String = className;
var classRef:Class = getDefinitionByName(dynamicClass) as Class;
return new classRef();
}

โดยการเรียก createInstace(/*ชื่อคลาส*/) จะทำการสร้างคลาสตัวนั้นๆมาให้ทันที **แต่เราต้องทำการประกาศชื่อคลาสนั้นๆไว้ก่อนโดยไม่ต้องทำอะไร มิฉะนั้นFlashจะไม่รู้จักคลาสของเราแล้วจะทำให้เออเร่อได้ครับ** โดยจากโค้ดด้านบนเราสามารถย่อได้เหลือดังนี้


//type เป็นตัวแปรชนิดของเกมที่ได้มาเป็น A, B หรือ C

minigame_A;
minigame_B;
minigame_C;

var mini:MovieClip = createInstace("minigame_"+type);

ซึ่งผลลัพธ์ที่ได้จะเหมือนกับด้านบนทุุกประการ ซึ่งจะเห็นได้ว่าประหยัดเวลาและจำนวนแถวไปได้เยอะเลยทีเดียวครับ

กู้เงิน | เศรษฐกิจพอเพียง | สินเชื่อบุคคล | สมัครบัตรกดเงินสด | สินเชื่อ | เงินกู้ด่วน | ยืมเงินทรูมูฟ | เงินด่วนนอกระบบ