DelphiX i Timer

0

Napisałem grę z wykorzystaniem DelphiX. Jej szybkość reguluję komponentem DXTimer. I tutaj pojawia się problem - regulacja działa skokowo:

Gra działa z maksymalną szybkością przy ustawieniu Timer.interval od 0 do 8 milisekund, przy ustawieniu od 9 do 21 milisekund ze średnią i powyżej z mniejszą.

Natomiast gdy uruchomię w tle jakąś aplikację multimedialną np Cinema Player'a czy program do karty telewizyjnej wszystko jest w porządku i regulacja działa płynnie - widać różnicę szybkości co 1 milisekundę..

O co tu chodzi? Jak mam zachować płynność regulacji szybkości bez uruchamiania dodatkowych aplikacji?

Będę bardzo wdzięczny za pomoc! :)

[email protected]</image>

0

Zamiast timera uzależniaj animację od upływu czasu.

Może przykład: poruszanie kulką

  • metoda timerowa: timer co 10ms ruszy kulką o 100px - timer się spóźnił - jest przeskok

-metoda czasowa: od poprzedniej klatki upłynęło 8ms, co przy prędkości kulki 100px/10ms daje 80px.

Im ktoś ma szybszy sprzęt tym więcej klatek zobaczy, ale bez znaczenia, czy timer spóźni się 1ms, czy 10ms: we właściwej milisekundzie obiekt będzie we właściwym miejscu (najwyżej zgubi jakąś klatkę, ale nie będzie widać "szarpnięć" przesuwania).

0

WITAM!

Dzięki SZCZAWIKU za pomoc ale niedokładnie o to mi chodziło, może za bardzo to pokręciłem. Przesyłam Ci moją gierkę może teraz mi pomożesz..
Po uruchomieniu wczytaj jakieś plansze i naciśnij S.
Kiedy reguluję położenie suwaka zmieniam wartość DXTimer.interval o 1 w granicach od 4ms do 20 ms. Widać to po animacji np diamentów, że szybkość nie zmienia się płynnie lecz skokowo. Lecz jeśli właczę teraz jakiś odtwarzacz np Windows Media Player i znowu uaktywnię okno gry przesuwanie suwaka płynnie zmienia jej szybkość i w ogóle chodzi jakoś szybciej. Czyli dokładnie tak jak chcę. Co takiego mają w sobie odtwarzacze filmów, że wpływają w ten sposób na mój program? Chcę to osiągnąć bez ich pomocy!!!

Pozdrawiam!
[email protected]

0

Na żadnym z moich 2 kompów nie widzę żadnej różnicy. Jeśli jednak jest to kwestia szybkości obsługi komunikatów to mój pierwszy post jest dla ciebie rozwiązaniem.

Jeśli klatka animacji ma zmieniać się co 4ms, a minęło 8ms to wg timera przełączy klatkę (przy każdym wywołaniu), a wg metody czasowej wyliczy, ze ma już wyświetlić kolejną i wszystko będzie chodziło niezależnie od szybkości komputera.

Przyznam, że nie widzę różnicy i nie wiem niestety, czemu playery moga wpływać na szybkość działania aplikacji.

0

DelphiX to badziewny komponent, najgorszy jaki istnieje do DX. Mam zerowa wydajnosc jesli zaczniemy pisac cos co ma wiecej niz 20 poligonow. Poczytaj sobie o PowerDraw, to jest duzo trudniejsze ale milion razy lepsze DelphiX...oto gra w tym zrobiona dla przykladu: http://ef.milospamkiller.com

0

DelphiX to badziewny komponent, najgorszy jaki istnieje do DX.

Nie wiem czy jest najgorszy ale na pewno nie jest "badziewny".

Mam zerowa wydajnosc jesli zaczniemy pisac cos co ma wiecej niz 20 poligonow.

Po pierwsze to mowa jest tutaj o gierce 2D a tam operujemy na spriteach a nie na polygonach. Chociaz i tak pewnie sprity miales na mysli. Tak wiec nie wiem dlaczego Ty masz zerowa wydajnosc przy 20 spriteach bo ja mam 85 klatek przy 200 :-/

Podaje link do nowej wersji DelphiX obslugujacej hardware acceleration:) :) :) :)

http://www.micrel.cz/Dx/

Ale dzieki za linka, widze fajna gierke w ktora mozna pograc:)

Pozdrawiam,

Wodzu

0

Wiesz, ost. raz DelphiX mialem w reku pare lat temu :) bycmoze cos sie zmienilo. Jednak w momencie gdy sie przesiadalem na powerDraw to DelphiX nie dorastal mu do piet i juz na nim zostalem, do grafiki 2D wystarcza w zupelnosci. Przy odrobienie pomyslunku mozna zrobic niemal wszystko.

1 użytkowników online, w tym zalogowanych: 0, gości: 1