Mehre Objekte in Zeitabständen bewegen
Übersicht

![]() |
WEBLinkBetreff: Mehre Objekte in Zeitabständen bewegen |
![]() Antworten mit Zitat ![]() |
---|---|---|
hallo,
erst mla der code Code: [AUSKLAPPEN] For exvar.extraimage = Each extraimage
DrawImage ex1,exvar\xex,exvar\yex If MilliSecs() > yextime + 5 Then exvar\yex = exvar\yex + 1 yextime = MilliSecs() EndIf If exvar\yex > 500 Then Delete exvar.extraimage Next Wenn ich diesen Code nehmen sollen alle mit Types generierten Objekte in den Gegeben Zeitabstand sich bewegen. Dies fuktioniert nicht. Es fällt nur eins und die anderem bleiben da wo sie erschaffen wurden. Wenn ich den Code wiederum so benutze Code: [AUSKLAPPEN] For exvar.extraimage = Each extraimage
DrawImage ex1,exvar\xex,exvar\yex exvar\yex = exvar\yex + 1 If exvar\yex > 500 Then Delete exvar.extraimage Next Bewegen sich alle Objekte nach ihrer erschaffung leider ohne einerZeitlichen Begrenzung. |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Also ich würde mir erstmal Gedanken über deine Bezeichnung für die Variablen machen. Steigst du da wirklich noch durch? Mir fällt es jetzt schon schwer ![]() Nun zu deinem Prob: Wenn ich das richtig verstanden habe, sollen sich die Objekte eine bestimmte Zeit bewegen, oder? Da ich durch dein Code nicht so gut durchgestiegen bin, habe ich dir ein Beispiel gezaubert. Dein Fehler ist glaube ich, das du die ein oder andere Variable nicht als Feld deklarierst. Guck dir mal an, ob du das verstehst und ob deine Probleme damit behoben sind: Code: [AUSKLAPPEN] Graphics 640,480,16,2 SetBuffer BackBuffer() SeedRnd MilliSecs() Type objekt Field x#,y# Field timer Field time_left End Type For i = 1 To 10 o.objekt = New objekt o\x# = Rand(10,630) o\y# = Rand(10,470) o\timer = MilliSecs() o\time_left = 0 ;Wie lange (Sekunden) sollen sich die Objekte bewegen <-- znächst 0 Next Repeat Cls Color 255,255,255 Text 0,0,"Drücke Enter, um die Objekte bewegen zu lasen, wenn sich kein Objekt bewegt" If KeyHit(28) For o.objekt = Each objekt o\time_left = Rand(1,5) Next EndIf For o.objekt = Each objekt Color 255,0,0 Oval o\x#,o\y#,10,10 If MilliSecs()-1000 => o\timer o\timer = MilliSecs() o\time_left = o\time_left - 1 EndIf If o\time_left > 0 o\x# = o\x# + Cos( Rnd(0,360) ) o\y# = o\y# + Sin( Rnd(0,360) ) EndIf Color 255,255,255 If o\time_left > 0 Text o\x#,o\y#-10,o\time_left+" bewegen" EndIf Next Flip Until KeyHit(1):End |
||
~ Hey Ho Let's Go ~ |
![]() |
Ralf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
das Zurücksetzen des Timers muss aus der For-Next-Schleife raus. Etwa so: Code: [AUSKLAPPEN] For exvar.extraimage = Each extraimage
DrawImage ex1,exvar\xex,exvar\yex If MilliSecs() > yextime + 5 Then exvar\yex = exvar\yex + 1 yextimereset=1 EndIf If exvar\yex > 500 Then Delete exvar.extraimage Next If yextimereset=1 yextimereset=0 : yextime = MilliSecs() EndIf So siollte es funktionieren. Ralf |
||
![]() |
WEBLink |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Blitzkrieg Bop
Jo, ich blick da noch durch ist ja nur für ein paar Extras die man einsammeln kan. Die X und Y position und das aussehen. ![]() @ ralf Jo, hast recht daran lags. Thx |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group