Seite 1 von 1

Window Fehler

Verfasst: 12.03.2008 15:51
von Milchshake
Hi,
also ich habe ein Problem, dass die meisten von euch wahrscheinlich lösen können.
Also hier der Code:

Code: Alles auswählen

InitSprite()
InitSound()
InitKeyboard()
InitMouse()

OpenWindow(0,0,0,800,500,"Level Editor",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 OpenWindowedScreen(WindowID(0),300,0,500,500,0,0,0)
  If CreateGadgetList(WindowID(0))
    ButtonGadget(0,0,0,0,0,"")
    ButtonGadget(1,0,0,50,20,"New")
    ButtonGadget(2,0,22,50,20,"Open")
    ButtonGadget(3,0,44,50,20,"Save")
    ButtonGadget(4,260,0,20,20,">")
    ButtonGadget(5,280,0,20,20,">>")
    ButtonGadget(6,240,0,20,20,"<")
    ButtonGadget(7,220,0,20,20,"<<")
    TextGadget(8,0, 130,250, 220, "PosX:"+Str(PosX), #PB_Text_Center|#PB_Text_Border)
  EndIf

Repeat
ExamineKeyboard()

Event = WindowEvent()

Select EventGadget() ; Welches Gadget hat das Ereignis ausgelöst?
       
    Case 4
     
     PosX + 50
     SetGadgetText(8,"PosX:"+Str(PosX))
      EndSelect


StartDrawing(ScreenOutput())
  For abcdefg = 0 To 500 Step 50
 Line(0,abcdefg,500,0,#White)
  Next 
  For bcdefg = 0 To 500 Step 50
 Line(bcdefg,0,0,500,#White)
  Next 
StopDrawing()
Mein Problem ist, dass wenn ich auf das > drücke, sollte eig. PosX + 50 rechnen. Aber das macht das Programm nicht nur einmal sondern sehrsehr oft.
Wie kann ich diesen kleinen Denkfehler beheben?
Danke schon im Vorraus
Milchshake

Verfasst: 12.03.2008 15:56
von Kaeru Gaman
sei mal so nett und poste den KOMPLETTEN code...
wenn du das ende abschneidest, kann man den nicht testen....

zum Hauptproblem:
du solltest nur dann nach EventGadget entscheiden,
wenn du vorher geprüft hast,
ob Event auch ein #PB_Event_Gadget ist.

PS:
Kiffi hat geschrieben:...und einen aussagekräftigeren Betreff wählen.
ja, bitte drauf achten.

Re: Window Fehler

Verfasst: 12.03.2008 15:57
von Kiffi
http://www.purebasic.fr/german/viewtopic.php?t=15914

Grüße ... Kiffi

P.S.: Beim nächsten Mal bitte einen funktionierenden Code posten und einen
aussagekräftigeren Betreff wählen.

Verfasst: 12.03.2008 16:01
von Milchshake
Entschuldigung :oops:

Ok, hier noch mal der komplette Code:

Code: Alles auswählen

InitSprite()
InitSound()
InitKeyboard()
InitMouse()

OpenWindow(0,0,0,800,500,"Level Editor",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 OpenWindowedScreen(WindowID(0),300,0,500,500,0,0,0)
  If CreateGadgetList(WindowID(0))
    ButtonGadget(0,0,0,0,0,"")
    ButtonGadget(1,0,0,50,20,"New")
    ButtonGadget(2,0,22,50,20,"Open")
    ButtonGadget(3,0,44,50,20,"Save")
    ButtonGadget(4,260,0,20,20,">")
    ButtonGadget(5,280,0,20,20,">>")
    ButtonGadget(6,240,0,20,20,"<")
    ButtonGadget(7,220,0,20,20,"<<")
    TextGadget(8,0, 130,250, 220, "PosX:"+Str(PosX), #PB_Text_Center|#PB_Text_Border)
  EndIf

Repeat
ExamineKeyboard()

Event = WindowEvent()

Select EventGadget() ; Welches Gadget hat das Ereignis ausgelöst?
       
    Case 4
     
     PosX + 50
     SetGadgetText(8,"PosX:"+Str(PosX))
      EndSelect


StartDrawing(ScreenOutput())
  For abcdefg = 0 To 500 Step 50
 Line(0,abcdefg,500,0,#White)
  Next 
  For bcdefg = 0 To 500 Step 50
 Line(bcdefg,0,0,500,#White)
  Next 
StopDrawing()


Until Event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
Das Problem ist, dass wenn man den > Knopf drückt, PosX sich die ganze Zeit erhöht. Eigentlich soll es sich nur um 50 erhöhen. Und das auch nur einmal.

Meine Frage jetzt:
Wie mache ich das, dass wenn man den > Knopf drückt nur einmal PosX steigt?

lg Milchshake

Verfasst: 12.03.2008 16:06
von Kaeru Gaman
hallo, bitte auch den rest lesen! :evil:

Verfasst: 12.03.2008 16:08
von Kiffi
@Milchshake: meinen Link oben kannst Du ignorieren. Ich habe beim
mal-eben-über-den-Code-linsen mich zu früh auf das ExamineKeyboard()
gestürzt.

Die Lösung hat Kaeru Gaman schon oben gepostet

Grüße ... Kiffi