ฉันเขียนตัวจับเวลาเพื่อแสดงให้ผู้ใช้เห็นว่าเขา/เธออยู่ในฉากปัจจุบันนี้มากแค่ไหน:
timer_txt.x = 352;
timer_txt.y = 705;
var nCount: Number = 0;
var myTimer: Timer = new Timer(50, nCount);
timer_txt.text = "Time: " + nCount.toString();
myTimer.start();
function countUp(e: TimerEvent): void {
nCount++;
timer_txt.text = "Time: " + nCount.toString();
if (nCount > 60) {
var formattedTime =
((Math.floor(nCount / 60)) + ":" + (nCount % 60 >= 10 ? "" : "0") + (nCount % 60));
timer_txt.text = "Time: " + formattedTime.toString();
}
}
ฉันมีปุ่ม reset
เพื่อรีเซ็ตวัตถุอื่นๆ ในฉาก แต่ไม่ใช่ timer
ปัญหาของฉันคือ:
เมื่อใดก็ตามที่ฉันคลิกที่ปุ่ม
reset
timer
จะช้าลงเรื่อยๆ และฉันไม่รู้ว่าทำไมในขณะที่ฉันไม่ได้ทำการเปลี่ยนแปลงใดๆ ในตัวจับเวลา ฉันมีflags
และchild
มากมายบนเวที เมื่อผู้ใช้คลิก/แตะปุ่มreset
flags
ทั้งหมดจะเท่ากับ0
และchild
ทั้งหมดจะเป็นremoved
และadd
อีกครั้งเมื่อถึงเวทีเมื่อผู้ใช้ไปที่ฉากอื่น (ตัวจับเวลาควรหยุดทำงานในขณะที่ค่าปัจจุบันของตัวจับเวลาจำเป็นต้องถูกบันทึกไว้ในตัวแปร) และเมื่อผู้ใช้กลับมาที่ฉากนี้อีกครั้ง ตัวจับเวลาควรทำงานดังนี้:
previous value + counting the time
เวลาเปิดในมือถือความเร็วจะต่างจากพีซี มีวิธีแก้ไขใดในการเขียนโค้ดให้เข้ากันได้กับจังหวะเวลาของอุปกรณ์เนทีฟหรือไม่? นี่คือฟังก์ชั่นที่ฉันเขียน:
function timerAtoB(firstColor: int): void { lineColor = firstColor; //GRID; //Path A to B var PathAB: Grid; PathAB = new Grid(4, 35, 20, 22, canvas, lineColor); this.addChild(PathAB); }
ฟังก์ชันนี้คือการเชื่อมต่อมิติ A กับมิติ B การเชื่อมต่อระหว่าง A และ B จะถูกสร้างขึ้นโดยใช้คลาสที่เรียกว่า Grid
- คลาสนี้คือการค้นหาเส้นทางที่สั้นที่สุดระหว่าง A และ B และทำการเชื่อมต่อระหว่างกัน (ซึ่งฉันไม่ต้องการผ่านมันไปมากกว่านี้เพราะมัน มีความซับซ้อนมากขึ้น)
และฉันเรียกฟังก์ชันนี้ด้วยความล่าช้า:
delayCallFunctions(1000, timerAtoB, wireColor);
เมื่อฉันใช้งานบนมือถือของฉัน ความล่าช้านี้จะทำงานได้ตามปกติแต่ไม่ใช่ในเวลาที่ถูกต้อง ตัวอย่างเช่น ฉันเขียน 1000ms
หมายถึงเรียกใช้ฟังก์ชันหลังจากประมาณ 1 sec
แต่ในมือถือของฉัน ต้องใช้มากกว่า 1 sec
เพื่อเรียกใช้ฟังก์ชัน
ขอขอบคุณล่วงหน้าสำหรับเวลาและความช่วยเหลือของคุณ