Pop Up Fenster Timer

Previous topic - Next topic

WPShadow

Hi!

Ich spiele gerade verschiedene Möglichkeiten durch, wie ein "Fenster" aufpoppen soll. Dabei habe ich das Problem, dass es nicht sofort erscheinen soll, sondern eine Verzögerung von ca. 2 - 3 Sekunden haben soll. Da ich in etwa diesen Timer benutze

    GT=(GETTIMERALL()-Old_Timer)/1000
    Old_Timer=GETTIMERALL()

bin ich mir nicht sicher, wie ich messen soll, da ich permanent meinen Starttimer überschreibe und mir inzwischen nicht mehr sicher bin, wie ich machen soll... =(

Kann mir wer helfen???

GLG

W.

PS.: Hier das Programm... (vergessen reinzustellen!!!)

Code (glbasic) Select
GLOBAL GT, Old_Timer, hui

Mausload()

WHILE TRUE

FILLRECT 20, 20, 100, 100, RGB(0, 0, 255)

Maus()

IF mx >= 20 AND mx <= 100 AND my >= 20 AND my <= 100
window_true()
ELSE
window_false()
ENDIF


    GT=(GETTIMERALL()-Old_Timer)/1000
    Old_Timer=GETTIMERALL()
   
    hui = hui + GT
   
    PRINT hui, 0, 0


SHOWSCREEN

WEND


FUNCTION Mausload:

LOADSPRITE "Maus.png", 1000

ENDFUNCTION


FUNCTION Maus:

GLOBAL mx, my, b1, b2

MOUSESTATE mx, my, b1, b2

SPRITE 1000, mx, my

ENDFUNCTION

FUNCTION window_true:



ENDFUNCTION

FUNCTION window_false:

ENDFUNCTION
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

BumbleBee

Hi

Also sobald du über das blaue Quadrat fährst erscheint nach 3 Sekunden ein
Rechteck (Window) im Screen .Verlässt du aber das Quadrat, und fährst erneut
darüber, mußt du wieder 3 Sekunden warten. Jetzt kannst du es ja nach deinen
Wünschen ausbauen oder umbauen.:)
Den anderen Timer in deinem Programm (kommt mir bekannt vor):D kannst du ja für
was anderes hernehmen.

Code (glbasic) Select
FUNCTION window_true:

   Cur_Timer=GETTIMERALL() //Current Timer
             
    IF Cur_Timer>Timer+3000 //3 Seconds                              
      FILLRECT 200, 200, 400, 400, RGB(255, 255, 0) //Window ;)
    ENDIF
 
ENDFUNCTION

FUNCTION window_false:

   Timer=GETTIMERALL()

ENDFUNCTION
So in etwa?
Habe jetzt bloß wenig Zeit. Muss schnell weg. Ich hoffe es stimmt so.
Bis dann.


Cheers
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

WPShadow

Hi!

Funktioniert super, danke! So richtig komme ich mit den Timer - Geschichten noch immer nicht klar.

Und ja, den anderen Timer benutze ich noch immer gerne! (Ist genau das, was ich suche! Echtzeittimer *freu*)

Aber das bringt mich zu einem anderen, schwierigen Problem. Und das ist bei weitem schwieriger als dieses:

In etwa möchte ich etwas ähnliches wie das hier programmieren:



Das Problem dabei ist aber, dass ich mir nicht sicher bin, wie ich ein solches System anlegen kann. Die einzelnen Bilder stellen ja 3D Objektteile dar, die zwar sehr schnell geladen sind (das ist ja nicht das Problem). Aber es sollte ja ein dynamisches Inventar sein, in das man Sachen rein geben kann, drinnen verschieben (was schon halbwegs funktioniert) und dann wieder positioniert werden kann.

Das mit dem Optischen System sollte halbwegs lösbar sein, aber ich bin mir wegen der Objekte nicht sicher, wie ich da tun soll und vor allem, wie man das "dynamisch" löst. Ich muss ja die Objekte auch irgendwie "speichern" (auch auf der Festplatte) und danach wieder laden können...

Hier der abgeänderte Code:

Code (glbasic) Select
// --------------------------------- //
// Project:
// Start: Monday, January 08, 2007
// IDE Version: 4.051

GLOBAL GT, Old_Timer, hui, posx, posy

Mausload()

LOADSPRITE "Inventar.bmp", 999

WHILE TRUE

SPRITE 999, posx, posy

//FILLRECT posx, posy, posx + 100, posy + 100, RGB(0, 0, 255)

Maus()

IF mx >= posx AND mx <= posx + 100 AND my >= posy AND my <= posy + 100
window_true()
ELSE
window_false()
ENDIF

IF mx >= posx AND mx <= posx + 100 AND my >= posy AND my <= posy + 100 AND b1 = 1

window_false()
posx = mx - 40
posy = my - 40

ENDIF


PRINT LEN(posx), 0, 20



    GT=(GETTIMERALL()-Old_Timer)/1000
    Old_Timer=GETTIMERALL()

    hui = hui + GT

    PRINT b1, 0, 0


SHOWSCREEN

WEND


FUNCTION Mausload:

LOADSPRITE "Maus.png", 1000

ENDFUNCTION


FUNCTION Maus:

GLOBAL mx, my, b1, b2

MOUSESTATE mx, my, b1, b2

SPRITE 1000, mx, my

ENDFUNCTION

FUNCTION window_true:

   Cur_Timer=GETTIMERALL() //Current Timer
             
    IF Cur_Timer>Timer+500 //0.5 Seconds                              
      FILLRECT 200, 200, 400, 400, RGB(0, 128, 255) //Window ;)
      PRINT "Stärke: 56", 220, 220
     
    ENDIF

ENDFUNCTION

FUNCTION window_false:

Timer=GETTIMERALL()

ENDFUNCTION
GLG

W.

PS.: Als Konkretbeispiel dachte ich an Diablo, Diablo 2 oder Titan Quest (Bild)...
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

Ich mach solche Sachen (z.B. ein- und ausfaden) immer so:

Code (glbasic) Select
jetzt = GETTIMERALL()
start = jetzt + 3000 // fängt nach 3 sek an - kann man auch verschieben
ende = start + 3000 // 3 sekunden dauert das

WHILE TRUE
   jetzt = GETTIMERALL()


   // Jetzt "normalisieren", d.h. der Bereich zwischen
   // start und ende wird auf die Werte 0 -> 1
   // gestreckt
   // wenn pos <0, ist jetzt noch vor start
   // wenn pos >1, ist jetzt bereits nach ende
    pos = (jetzt-start) / (ende - start)

   SELECT pos
   CASE <0
      PRINT "Warten...", 100,100
   // Mitten im Warteprozess
   CASE 0 TO 1
      ALPHAMODE -pos
      PRINT "Fading", 100, 100
   CASE >1
      PRINT "Vorbei!", 100, 100
   ENDSELECT
   SHOWSCREEN
WEND