.| Autor | Beitrag |
|---|---|
|
000 04.12.2010, 15:07 Xardas |
Tag zusammen, erstmal zu meinem Problem: Dadurch dass man das Frame des Sprites,welches dargestellt werden soll, manuell an den Aufruf der Draw-Funktion übergeben werden muss, arbeite ich mit der Systemzeit. Zunächst initialisiere ich am Anfang der Hud.cpp 2 Variablen : float currentTime = NULL ; In der CHudHealth::Draw Methode später : if (currentTime = NULL) currentTime = gHUD.m_flTime; if ((gHUD.m_flTime-currentTime)>1.0f) SPR_Set(LoadSprite("sprites/ECGfine.spr"), 255, 255, 255); Das Sprite hat insgesamt 12 Sprites, durch die auch korrekt durch itteriert wird. Mein Problem ist, dass nachdem man das erste mal den Suit aufhebt, zwar 1 Sekunde gewartet wird ( = 1.0F, wenn ich die werte auf z.b 4.0F ändere wartet er 4 Sekunden), bis der nächste Frame gewählt wird, ab diesem Punkt jedoch alles was in dem {] Block steht durchgehend ausgeführt wird. Ich finde meinen Fehler einfach nicht - wär nett, wenn da mal jemand drüberschauen könnte ;) --Music Artist / 2D Artist / Mapper Dieser Beitrag wurde am 04.12.2010 um 15:14 von Xardas bearbeitet. |
|
Profil || Suche |
|
001 04.12.2010, 16:38 theDon |
Du willst an der Stelle vermutlich eher keine Zuweisung ausfuehren. Ansonsten: Warum haelst du NULL fuer einen geeigneten Wert fuer Floats? --\o tanz den naziprau! o/ And more than ever, I hope to never fall, |
|
Profil || Suche |
|
002 04.12.2010, 17:23 Xardas |
Also ich komme aus dem Java-Lager, es sollte doch möglich sein jeden Datentyp auf NULL zu setzen, oder? Ich könnte auch beispielsweise -1 als Initialwert benutzen, aber es sollte auf das selbe hinauslaufen. Und ich denke dass der Fehler tatsächlich an dem "=" liegt, da habe ich geschlampt ;) Wunder mich nur, dass der Compiler da keinen Fehler ausgespuckt hat. Oder wird das ganze als boolscher Ausdruck interpretiert ? Sprich, es wird TRUE zurückgegeben wenn in meinem Falle die Operation currentTime = NULL erfolgreich war? Edit : Jop, klappt nun wie geplant. Danke nochmal ;) --Music Artist / 2D Artist / Mapper Dieser Beitrag wurde am 04.12.2010 um 17:37 von Xardas bearbeitet. |
|
Profil || Suche |
|
003 04.12.2010, 19:00 Kriz |
Es ist syntaktisch und grammatisch korrekt, nur eben nicht gewollt... Und C++ ist nicht Java ;-) Wenn der Ausdruck ausgewertet wird, kommt übrigens false raus... Denn NULL ist 0 ist false in C++ --K:R-I)Z++ |
|
Profil || Suche |
|
004 04.12.2010, 19:04 Bluthund |
C++ ist nicht Java. NULL in C++ (eigentlich in C - in C++ nimmt man ueblicherweise 0 statt NULL - bezeichnet lediglich den Nullpointer-Wert) ist auch nicht das was null in Java ist. edit2: Ne Zuweisung von null auf eine float-Variable ist btw in Java nicht drin. Siehe oben. operator=() gibt ueblicherweise den Wert zurueck, der zugewiesen wurde. Das ist hier auch der Fall, da es ne float-Zuweisung ist (also ohne Operator-Ueberladung). Von 0 verschiedene Werte in einer if-Kondition werden als true interpretiert. Im konkreten Fall also false. edit: ninja'd --The C language combines all the power of assembly language with all the ease-of-use of assembly language. Dieser Beitrag wurde am 04.12.2010 um 19:25 von Bluthund bearbeitet. |
|
Profil || Suche |
|
005 12.12.2010, 06:16 Megge |
Kann zwar weder vernünftig C++ noch hab ich mich je an HL-Code gesetzt, aber: ich seh das so, dass currentTime nur genau einmal gesetzt wird. somit wird die Differenz zwischen gHUD.m_flTime (was auch immer das ist) und currentTime immer grösser. Ergo wird die Klammer immer ausgeführt. Kann das sein? -- |
|
Profil || Suche |
|
006 12.12.2010, 16:04 theDon |
Nein, der Block wird immer ausgefuehrt, weil currentTime jedesmal davor auf 0 gesetzt wird. --\o tanz den naziprau! o/ And more than ever, I hope to never fall, |
|
Profil || Suche |

