วิธีสร้าง 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);

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

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน