คือตอนนี้กำลังทำ CAI ที่มีแบบทดสอบ 2 บท มีแบบฝึกหัด 2 บทอยู่ค่ะ ด้วยโปรแกรม Adobe flash cs5.5 ใช as3 แต่พอทำแบบฝึกหัดไป 1 บทโดยโค้ดตัวนี้
import flash.events.MouseEvent;
stop();
var NumberofQ:int = 10;// จำนวนคำถาม
var Question
bject = new Object();//สร้างออปเจค คำถาม
var RightAnsArray:Array = ["C","B","A","C","D","A","B","D","A","C"];//อาเรย์เก็บคำตอบที่ถูกต้อง เรียงข้อ 1 2 3 ...
var Score:int = 0;//เก็บคะแนนที่ได้
var AnsRight:int = 0;//เก็บจำนวนข้อที่ถูก
var AnsWrong:int = 0;//เก็บจำนวนข้อที่ผิด
Question.CurrentQ = 0;// ข้อที่กำลังทำอยู่
NewQuestion();//เริ่มคำถาม
function NewQuestion()
{
Question.CurrentQ++;
Question.Choose = "";// เก็บว่าคำถามนั้น มีการเลือกคำตอบหรือยัง ตอนนี้ยัง
AnsA.buttonMode = true;
AnsB.buttonMode = true;
AnsC.buttonMode = true;
AnsD.buttonMode = true;
AnsA.addEventListener(MouseEvent.CLICK, onAns);
AnsB.addEventListener(MouseEvent.CLICK, onAns);
AnsC.addEventListener(MouseEvent.CLICK, onAns);
AnsD.addEventListener(MouseEvent.CLICK, onAns);
Btn_Next.addEventListener(MouseEvent.MOUSE_UP, onNext);
}
//เมื่อเลือกคำตอบ ข้อใดข้อหนึ่ง
function onAns(evt:MouseEvent):void
{
Question.Choose = (evt.target.name).slice(-1,4);//เลือกเอาเฉพาะอักษรตัวสุดท้าย
txtError.text = "";//เมื่อมีการเลือกคำตอบ ก็ไม่ต้องมีการแจ้งเตือน
switch (Question.Choose)
{
case "A" :
Mark("A");
break;
case "B" :
Mark("B");
break;
case "C" :
Mark("C");
break;
case "D" :
Mark("D");
break;
}
}
//เมื่อกดปุ่ม ถัดไป
function onNext(evt:MouseEvent):void
{
if (Question.Choose != "")
{
if (Question.Choose == RightAnsArray[Question.CurrentQ - 1])
{
Score++;//จำนวนคะแนน +1
AnsRight++;//จำนวนข้อถูก +1
}
else
{
AnsWrong++;//จำนวนการตอบผิด +1
}
Mark("None");//เรียกฟังก์ชัน ให้เคลียการวงกลมรอบตัวเลือกออก
nextFrame();//เล่นเฟรมถัดไป
//ถ้ายังไม่ถึงคำถามสุดท้ายให้แสดงคำถามต่อไป
if (Question.CurrentQ < NumberofQ)
{
NewQuestion();//เรียกฟังก์ชันเพื่อไปคำถามข้อต่อไป
}
}
else
{
txtError.text = "กรุณาเลือกคำตอบก่อน";//แจ้งเตือนเมื่อยังไม่ได้เลือกคำตอบ
}
}
//ฟังก์ชันในการวงกลมรอบตัวเลือก กขคง
function Mark(M:String)
{
AnsA.gotoAndStop(1);
AnsB.gotoAndStop(1);
AnsC.gotoAndStop(1);
AnsD.gotoAndStop(1);
switch (M)
{
case "A" :
AnsA.gotoAndStop(2);
break;
case "B" :
AnsB.gotoAndStop(2);
break;
case "C" :
AnsC.gotoAndStop(2);
break;
case "D" :
AnsD.gotoAndStop(2);
break;
case "None" :
AnsA.gotoAndStop(1);
AnsB.gotoAndStop(1);
AnsC.gotoAndStop(1);
AnsD.gotoAndStop(1);
break;
}
}
แล้วเราก็ทำบทอื่นๆโดยโค้ดตัวนี้ แต่เราเปลี่ยนชื่อบัททอนต่างๆหมดแล้วนะ พอกดเล่นมันก็ขึ้นเออเร่อ ในช่วงโค้ดตรงนี้
var NumberofQ:int = 10;// จำนวนคำถาม
var Question
bject = new Object();//สร้างออปเจค คำถาม
var RightAnsArray:Array = ["C","B","A","C","D","A","B","D","A","C"];//อาเรย์เก็บคำตอบที่ถูกต้อง เรียงข้อ 1 2 3 ...
var Score:int = 0;//เก็บคะแนนที่ได้
var AnsRight:int = 0;//เก็บจำนวนข้อที่ถูก
var AnsWrong:int = 0;//เก็บจำนวนข้อที่ผิด
Question.CurrentQ = 0;// ข้อที่กำลังทำอยู่
NewQuestion();//เริ่มคำถาม
function NewQuestion()
{
เราเหลือแค่เชื่อมแบบฝึกหัดเข้ากันกับตัวหลักแต่มันก็ไม่ได้ ไม่งั้นเราก็จะเสร้จแล้ว ใครพอรู้วิธีการแก้ไขช่วยบอกทีนะค่ะ เราจนปัญญาจริงๆ
ปล.ถ้าแท๊กผิดห้องขออภัยด้วยนะ
Flash โค้ดซ้ำกันแก้ยังไงให้เล่นได้
import flash.events.MouseEvent;
stop();
var NumberofQ:int = 10;// จำนวนคำถาม
var Questionbject = new Object();//สร้างออปเจค คำถาม
var RightAnsArray:Array = ["C","B","A","C","D","A","B","D","A","C"];//อาเรย์เก็บคำตอบที่ถูกต้อง เรียงข้อ 1 2 3 ...
var Score:int = 0;//เก็บคะแนนที่ได้
var AnsRight:int = 0;//เก็บจำนวนข้อที่ถูก
var AnsWrong:int = 0;//เก็บจำนวนข้อที่ผิด
Question.CurrentQ = 0;// ข้อที่กำลังทำอยู่
NewQuestion();//เริ่มคำถาม
function NewQuestion()
{
Question.CurrentQ++;
Question.Choose = "";// เก็บว่าคำถามนั้น มีการเลือกคำตอบหรือยัง ตอนนี้ยัง
AnsA.buttonMode = true;
AnsB.buttonMode = true;
AnsC.buttonMode = true;
AnsD.buttonMode = true;
AnsA.addEventListener(MouseEvent.CLICK, onAns);
AnsB.addEventListener(MouseEvent.CLICK, onAns);
AnsC.addEventListener(MouseEvent.CLICK, onAns);
AnsD.addEventListener(MouseEvent.CLICK, onAns);
Btn_Next.addEventListener(MouseEvent.MOUSE_UP, onNext);
}
//เมื่อเลือกคำตอบ ข้อใดข้อหนึ่ง
function onAns(evt:MouseEvent):void
{
Question.Choose = (evt.target.name).slice(-1,4);//เลือกเอาเฉพาะอักษรตัวสุดท้าย
txtError.text = "";//เมื่อมีการเลือกคำตอบ ก็ไม่ต้องมีการแจ้งเตือน
switch (Question.Choose)
{
case "A" :
Mark("A");
break;
case "B" :
Mark("B");
break;
case "C" :
Mark("C");
break;
case "D" :
Mark("D");
break;
}
}
//เมื่อกดปุ่ม ถัดไป
function onNext(evt:MouseEvent):void
{
if (Question.Choose != "")
{
if (Question.Choose == RightAnsArray[Question.CurrentQ - 1])
{
Score++;//จำนวนคะแนน +1
AnsRight++;//จำนวนข้อถูก +1
}
else
{
AnsWrong++;//จำนวนการตอบผิด +1
}
Mark("None");//เรียกฟังก์ชัน ให้เคลียการวงกลมรอบตัวเลือกออก
nextFrame();//เล่นเฟรมถัดไป
//ถ้ายังไม่ถึงคำถามสุดท้ายให้แสดงคำถามต่อไป
if (Question.CurrentQ < NumberofQ)
{
NewQuestion();//เรียกฟังก์ชันเพื่อไปคำถามข้อต่อไป
}
}
else
{
txtError.text = "กรุณาเลือกคำตอบก่อน";//แจ้งเตือนเมื่อยังไม่ได้เลือกคำตอบ
}
}
//ฟังก์ชันในการวงกลมรอบตัวเลือก กขคง
function Mark(M:String)
{
AnsA.gotoAndStop(1);
AnsB.gotoAndStop(1);
AnsC.gotoAndStop(1);
AnsD.gotoAndStop(1);
switch (M)
{
case "A" :
AnsA.gotoAndStop(2);
break;
case "B" :
AnsB.gotoAndStop(2);
break;
case "C" :
AnsC.gotoAndStop(2);
break;
case "D" :
AnsD.gotoAndStop(2);
break;
case "None" :
AnsA.gotoAndStop(1);
AnsB.gotoAndStop(1);
AnsC.gotoAndStop(1);
AnsD.gotoAndStop(1);
break;
}
}
แล้วเราก็ทำบทอื่นๆโดยโค้ดตัวนี้ แต่เราเปลี่ยนชื่อบัททอนต่างๆหมดแล้วนะ พอกดเล่นมันก็ขึ้นเออเร่อ ในช่วงโค้ดตรงนี้
var NumberofQ:int = 10;// จำนวนคำถาม
var Questionbject = new Object();//สร้างออปเจค คำถาม
var RightAnsArray:Array = ["C","B","A","C","D","A","B","D","A","C"];//อาเรย์เก็บคำตอบที่ถูกต้อง เรียงข้อ 1 2 3 ...
var Score:int = 0;//เก็บคะแนนที่ได้
var AnsRight:int = 0;//เก็บจำนวนข้อที่ถูก
var AnsWrong:int = 0;//เก็บจำนวนข้อที่ผิด
Question.CurrentQ = 0;// ข้อที่กำลังทำอยู่
NewQuestion();//เริ่มคำถาม
function NewQuestion()
{
เราเหลือแค่เชื่อมแบบฝึกหัดเข้ากันกับตัวหลักแต่มันก็ไม่ได้ ไม่งั้นเราก็จะเสร้จแล้ว ใครพอรู้วิธีการแก้ไขช่วยบอกทีนะค่ะ เราจนปัญญาจริงๆ
ปล.ถ้าแท๊กผิดห้องขออภัยด้วยนะ