我在AS3中制作游戏并且我一直试图根据游戏开始以来的时间进行分数,分数会在游戏结束时显示,并且基本上是秒游戏开始乘以1000.但我很难看到如何做这样的事情,因为我已经把计时器放在一个单独的课程中,我试图将分数添加到主文档课程中
以下是我尝试的内容:
主要课程中的:
score.affichageScore.text = "votre score: " + chrono.seconds * 1000;
在这里,是我使用Date类的计时器类:
package cem {
import flash.display.MovieClip;
import flash.events.*;
public class Chronometre extends MovieClip {
var begin: Date;
public var seconds: uint = 0;
public function Chronometre() {
// constructor code
}
//************************************************Start the chrono*********************************************//
public function start() {
begin= new Date();
this.addEventListener(Event.ENTER_FRAME, _actualize);
}
//************************************************Stop the chrono*********************************************//
public function stop() {
this.removeEventListener(Event.ENTER_FRAME, _actualize);
}
//************************************************Actualize the chrono*********************************************//
private function _actualize(e: Event) {
var msSpent: uint = new Date().getTime() - begin.getTime();
seconds = Math.floor(msSpent/ 1000);
var milliseconds: uint = msSpent- (seconds * 1000);
affichage.text = seconds + ":" + milliseconds;
}
}
}
显而易见的问题是如何获得“秒”'''''从计时器类到“得分”的变量值''主类中的变量?
答案 0 :(得分:1)
请不要在每一帧上创建一个新日期 - 这是表现最差的选项。正如null所提到的,有一个计时器类可以计算时间,但它可以更容易:
getTimer();
返回自swf启动以来的毫秒数。所以你可以直接在你的主要游戏类中做到这一点:
// when the game starts
gameStartTime = getTimer();
// when the game ends
gameEndTime = getTimer();
// calculate score with one point for each millisecond
// (might be even better so that your scores won't always end in 000)
myScore = gameEndTime - gameStartTime;
// 1000 points for each second:
seconds = Math.floor((gameEndTime - gameStartTime) / 1000);
myScore = seconds * 1000;