Обратный отсчет и очки, AS3 - PullRequest
0 голосов
/ 25 июня 2010

Это все прекрасно работает, но одно. Как я могу рассчитывать на них сейчас?
Спасибо

ВЫХОД ИЗ ПОТЕРЯ ЖИЗНИ
580 560 540 520 500 480 460 ЭСТ ...

ВЫХОД ДОЛЖЕН БЫТЬ
600 599 598 597 596 595 ect ... 'и заканчивая счетчиком оставшегося времени, если нет выигрыша'

СКРИНШОТ ОТСЧЕТА

альтернативный текст http://poizenpoprecords.com/myspace/videodnd/deltaTime.jpg

ActionScript

//Starts with 600 life points, counts from 30-0
//game will be more intricate and retotal scores, this is just a sketch
var EQUATION:int;
var TIME:int = 30;
var COUNTDOWN:Number = 600;
var COUNTUP:Number = 0;
var START:int = getTimer();
var DELTATIME:int;
var lucky:int;

var myTimer:Timer = new Timer(1000,30);
myTimer.addEventListener(TimerEvent.TIMER,someFunction);
myTimer.start();

function someFunction(event:TimerEvent) {
DELTATIME = (getTimer() - START)/1000;
//trace(DELTATIME);
//lucky = Math.floor(Math.random()*55);
//trace(lucky);
EQUATION = COUNTDOWN - (DELTATIME*COUNTDOWN/TIME) + COUNTUP; 
var str:String = String (Math.abs (EQUATION));
//var sub:String = ("000000")+ str.substr(0, 4);
//tx.text = String (sub);
tx.text = String ("YOU HAVE  ")+(EQUATION)+("  POINTS");
txt.text = String(Math.floor(30 - DELTATIME))+("  SECONDS LEFT");
trace(EQUATION);
if(lucky==16){
myTimer.stop(); 
var mtInter:uint = setInterval (blk, 222);
function blk():void {
txt.visible = !txt.visible;
tx.visible = !tx.visible;
txt.text = String("You're Lucky This Time");
tx.text = String("You Get 100 Life Points!");
}
}
if(EQUATION==0){
myTimer.stop(); 
var mtIntv:uint = setInterval (blink, 222);
function blink():void {
txt.visible = !txt.visible;
tx.visible = !tx.visible;
txt.text = String("Time's Up!");
tx.text = String("You're Dead!");
}
}
}

СКРИНШОРТ ВИН

1 Ответ

1 голос
/ 25 июня 2010

Ваша функция обновления вызывается только каждую секунду, поэтому вы можете отобразить не более 30 значений.Вы хотите, чтобы ваш таймер вызывал вашу функцию обновления хотя бы один раз для каждой точки жизни.Также вы использовали int для значения DELTA, которое округляет число до ближайшего целого числа.Изменив его на тип Number, вы получите десятичные дроби.

Вот ваш код, обновленный для подсчета на единицу, хотя теперь ваша счастливая функция будет вычисляться чаще, поэтому вам нужно будет отрегулировать ее:

    //Starts with 600 life points, counts from 30-0
//game will be more intricate and retotal scores, this is just a sketch
var EQUATION:int;
var TIME:int = 30;
var COUNTDOWN:Number = 600;
var COUNTUP:Number = 0;
var START:int = getTimer();
var DELTATIME:Number;//<-- Changed this to a Number to you get more than 30 values out of it
var lucky:int;

var myTimer:Timer = new Timer(25); //<-- Changed the timer to repeat every 25 milliseconds and infinitely
myTimer.addEventListener(TimerEvent.TIMER,someFunction);
myTimer.start();

function someFunction(event:TimerEvent) {
DELTATIME = (getTimer() - START)/1000;
//trace(DELTATIME);
//lucky = Math.floor(Math.random()*55);
//trace(lucky);
EQUATION = COUNTDOWN - (DELTATIME*COUNTDOWN/TIME) + COUNTUP; 
var str:String = String (Math.abs (EQUATION));
//var sub:String = ("000000")+ str.substr(0, 4);
//tx.text = String (sub);
tx.text = String ("YOU HAVE  ")+(EQUATION)+("  POINTS");
txt.text = String(Math.floor(30 - DELTATIME))+("  SECONDS LEFT");
trace(EQUATION);
if(lucky==16){
myTimer.stop(); 
var mtInter:uint = setInterval (blk, 222);
function blk():void {
txt.visible = !txt.visible;
tx.visible = !tx.visible;
txt.text = String("You're Lucky This Time");
tx.text = String("You Get 100 Life Points!");
}
}
if(EQUATION==0){
myTimer.stop(); 
var mtIntv:uint = setInterval (blink, 222);
function blink():void {
txt.visible = !txt.visible;
tx.visible = !tx.visible;
txt.text = String("Time's Up!");
tx.text = String("You're Dead!");
}
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...