Strona 1 z 1

[AS2] Stoper, wyświetlanie "Best Lap"

: wt sty 11, 2011 6:20 pm
autor: mlodyga
Witam wszystkich.
Potrzebuje pomocy w stworzeniu stopera w as2, a tak naprawdę dodatkowej funkcji.
Mam zrobiony stoper który po kliknięciu klawisza "Up Key" zaczyna odmierzać czas, następnie po kliknięciu :Right Key" pokazuje odstępy czasu miedzy kliknięciami " lap ". Jak zrobić żeby w oddzielnym polu pokazywało czas który będzie najkrótszy spośród np 50 lap-ów :-D ?.
Przyznam się od razu że nie jestem zbytnio zaawansowany we flash wiec jeśli ktoś mógł by mi łopatologicznie wytłumaczyć to był bym wdzięczny.
Pozdrawiam serdecznie.

Re: Stoper wyświetlanie "Best Lap"

: wt sty 11, 2011 7:19 pm
autor: Marek_bf

Kod: Zaznacz cały

var startTime:Number = 0;
var scoreBoard:Array = new Array();

var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
	if (Key.getCode() == Key.UP) {
		startTime = new Date().getTime();
	}else if (Key.getCode() == Key.RIGHT) {
		poleTekstowe.text = viewResults(startTime) + " s";
	}
};
Key.addListener(keyListener);
//
function viewResults(time:Number):Number {
	var stopTime:Number = new Date().getTime();
	scoreBoard.push((stopTime - startTime) / 1000);
	scoreBoard.sort();
	return scoreBoard[0];
}

Re: Stoper wyświetlanie "Best Lap"

: wt sty 11, 2011 8:22 pm
autor: mlodyga
Zrobiłem pole dynamiczne o nazwie poleTekstowe wkleiłem kod i działa ale czas tj. "rekord" nie jest taki sam jak w pokazujących się u mnie wynikach, czy mógł byś mi poprawić mój kod tak aby jak wcisnę prawy przycisk to żeby z wyników wyświetlił się ten najlepszy?
Będę Ci bardzo wdzięczny.

Kod: Zaznacz cały

function startuj()
{
    if (!leci)
    {
        i = 00;
        _root.czas[i] = getTimer();
        interwal = setInterval(pokazCzas, 1);
        trace ("start");
        
		_root.createEmptyMovieClip("wyniki_mc", 0);
		wyniki_mc._x = 800;
        wyniki_mc._y = 100;
		
		


		
		

		

	}
    else
    {
        clearInterval(interwal);

    } // end else if
    leci = !leci;
} // End of the function



function runda()
{
    ++i;
    _root.czas[i] = getTimer();
    wyniki_mc.attachMovie("lista", "wynik" + Math.random(), wyniki_mc.getNextHighestDepth(), {_y: 20 * (i - 1), czas: "Lap " + i + ": " + czasRunda});
    if (i > 39)
    {
        wyniki_mc._y = wyniki_mc._y - 20;
		
		} // end if
} // End of the function



function ostatni()
{
	
	_root.czas[i] = getTimer();
lista.attachMovie("lista", "wynik", this.getNextHighestDepth(), {_y:300, _x:-1600, czas: + i + "   " + czasRunda});

} // End of the function




function formatujCzas(timer)
{
    minuty = Math.floor(timer / 60000);
    sekundy = Math.floor((timer - minuty * 60000) / 1000);
    milisekundy = Math.floor((timer - minuty * 60000 - sekundy * 1000) / 1);
    if (minuty < 10)
    {
        minutyP = "0" + minuty;
    }
    else
    {
        minutyP = minuty;
    } // end else if
    if (sekundy < 10)
    {
        sekundyP = "0" + sekundy;
    }
    else
    {
        sekundyP = sekundy;
    } // end else if
    if (milisekundy < 100)
    {
        milisekundyP = "0" + milisekundy;
    }
    else
    {
        milisekundyP = milisekundy;
    } // end else if
    return (minutyP + ":" + sekundyP + ":" + milisekundyP);
} // End of the function



function pokazCzas()
{
    
    czasRunda = formatujCzas(getTimer() - _root.czas[i]);
    czasTotal = "Total Time:  " + formatujCzas(getTimer() - _root.czas[0]);


} // End of the function
status = FLCmd("FullScreen", true);
stop ();
var i = 0;
var leci = false;
czas = Array();


var keyListener = new Object();
keyListener.onKeyDown = function ()


{
    trace (Key.getCode());

    if (Key.getCode() == 38)
    {
        startuj();
    } // end if
   
   
   
   if (Key.getCode() == 82 || Key.getCode() == 39)
    {
        runda() ,ostatni() ;
    } // end if

};
Key.addListener(keyListener); 

Re: Stoper wyświetlanie "Best Lap"

: wt sty 11, 2011 10:05 pm
autor: Marek_bf
Dekompilować też trzeba umieć ;)

Re: Stoper wyświetlanie "Best Lap"

: wt sty 11, 2011 10:56 pm
autor: mlodyga
no właśnie, a ja nawet nie wiem co to znaczy :-D ale pokombinuje i podekompiluje :-D
No tak ja to Flash dekompilerem czy jakoś tak robiłem :-D
Ale i tak nie rozwiązuje to mojego problemu, bo stoper którego z którego zrobiłem to co zrobiłem był zupełnie inny. Metodą prób i błędów przy pomocy tutoriali jakoś się udało ale brakuje mi tylko tego co w tytule posta.
To nie na moją głowę.
Więc proszę o pomoc :wink:
Obiecuje ostatni raz :-D
Jak bedziesz robił sobie blaty w kuchni to Ci też pomogę :-D

Re: Stoper wyświetlanie "Best Lap"

: śr sty 12, 2011 6:54 am
autor: Marek_bf
Jak będę robił sobie blaty do kuchni to nie rozbiorę w tym celu kuchni cudzej i nie użyje jej w swojej bo to jest kradzież, tak samo jak dekompilacja w celu własnego użytku. Niestety nie mogę Ci w takim wypadku pomóc.

Re: Stoper wyświetlanie "Best Lap"

: śr sty 12, 2011 10:36 pm
autor: mlodyga
Witam.

Trochę mnie źle zrozumiałeś.
A czy jak będziesz robił te blaty w kuchni i podejrzysz u kogoś jak wyglądają i zrobisz podobne, albo nawet identyczne to co wtedy?, też jest kradzież???

Stoper który zrobiłem jest całkiem inny od tego którego zdekompilowałem, a ponieważ nie mam doświadczenia we flash, to musiałem gdzieś podejrzeć jak wygląda kod. Co prawda bawiłem się z tym miesiąc ale zrobiłem tak żeby dzialało.
I podkreślam jeszcze raz, zdekompilowany flash posłużył mi tylko jako przykład.
Poza tym nie dekompilował bym niczego jak na forach były by podawane odpowiedzi, Czytając niektóre fora widzisz odpowiedź... "masz google" itd. Więc nawet się na nich nie rejestrowałem żeby zapytać, bo odpowiedź już znałem "masz google"
Tylko dla laika takiego jak ja to i google nie pomogą jak się nie wie czego szukać.
Więc proszę o pomoc żebym nie musiał znowu czegoś dekompilować, i żeby znowu mnie ktoś nie nazwał bezpodstawnie złodziejem.

Pozdrawiam.

Re: [AS2] Stoper, wyświetlanie "Best Lap"

: pt sty 21, 2011 12:59 am
autor: mlodyga
Witam ponownie.
Wystarczyło zamienić w Marka kodzie z

Kod: Zaznacz cały

 scoreBoard.push((stopTime - startTime) / 1000);

na

Kod: Zaznacz cały

 scoreBoard.push(czasRunda);
i wszystko działa jak chciałem.
Dzięki Marek_bf. :-D
Aż niemożliwe że sam do tego doszedłem.