Seite 1 von 1
Variable in Gadget einfügen
Verfasst: 28.05.2007 00:00
von Dark Skillu
Hallo ich würde gerne die Postition der Maus in 2 Variablen speichern und in ein Gadget einfügen lassen. Das Problem ist, dass
keine Variablen sondern nur Strings unterstützt in die ich keine Zahlen speichern kann soweit ich weiß?Hat jemand eine Lösung, ich könnte natürlich unter den Buttons einen Sprite erstellen, in den ich immer den Wert von den Variablen zeichnen lassen könnte.Ich hoffe ihr versteht mein Problem.
Hier der Code:
MfG DarkSkillu
Code: Alles auswählen
InitSprite()
InitMouse()
If OpenWindow(0,0,0,410,310,"Window",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
ButtonGadget(1,340, 10,60,20,"Button 1")
ButtonGadget(2,340, 40,60,20,"Button 2")
ButtonGadget(3,340, 70,60,20,"Button 3")
TextGadget (4,340,110,60,30 ,"")
EndIf
If OpenWindowedScreen(WindowID(0),5,5,320,300,0,0,0)
CreateSprite(0,20,20)
EndIf
StartDrawing(SpriteOutput(0))
Box(0, 0, 20, 20,RGB(105, 0, 0))
StopDrawing()
y = MouseX()
x = MouseY()
Repeat
If WindowEvent() = #PB_Event_CloseWindow
quit=1
EndIf
ClearScreen(RGB(0,0,0))
DisplaySprite(0, 50, 50)
FlipBuffers()
SetGadgetText(4,x+y)
Until quit=1
Edit: Habs mit dem zeichnen versucht aber Drawtext() unterstützt auch nur strings ...
Verfasst: 28.05.2007 00:05
von ts-soft
z.B.
Mit Stringfield wieder trennen und mit val den Wert ermitteln.
Verfasst: 28.05.2007 00:13
von Dark Skillu
Danke funktioniert, habe aber das Problem, dass sich der Wert ändetr aber der Mauszeiger nciht mehr angezeigt wird
Code: Alles auswählen
InitSprite()
InitMouse()
If OpenWindow(0,0,0,410,310,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
ButtonGadget(1,340, 10,60,20,"Button 1")
ButtonGadget(2,340, 40,60,20,"Button 2")
ButtonGadget(3,340, 70,60,20,"Button 3")
TextGadget (4,340,110,60,30 ,"")
EndIf
If OpenWindowedScreen(WindowID(0),5,5,320,300,0,0,0)
CreateSprite(0,20,20)
EndIf
StartDrawing(SpriteOutput(0))
Box(0, 0, 20, 20,RGB(105, 0, 0))
StopDrawing()
Repeat
ExamineMouse()
If WindowEvent() = #PB_Event_CloseWindow
quit=1
EndIf
ClearScreen(RGB(0,0,0))
DisplaySprite(0, 50, 50)
FlipBuffers()
y = MouseX()
x = MouseY()
SetGadgetText(4,Str(x)+ "," + Str(y))
Until quit=1
Verfasst: 28.05.2007 00:20
von edel
Versuch es mal so :
Code: Alles auswählen
Repeat
ExamineMouse()
x = MouseX()
y = MouseY()
event = WaitWindowEvent(1)
If event = #WM_MOUSEMOVE
SetGadgetText(4,Str(x)+ "," + Str(y))
EndIf
ClearScreen(RGB(0,0,0))
DisplaySprite(0, x, y)
FlipBuffers()
Until event = #PB_Event_CloseWindow
Verfasst: 28.05.2007 00:20
von Olaf
Nun ja...das ist eigentlich ganz logisch, dass die Maus nicht mehr angezeigt wird. Denn sobald du die Maus für deinen Screen zur Abfrage verwendest, wird sie für Windows gesperrt. Kannst's mal mit WindowMouseX/Y() probieren. Dann is se noch da

Verfasst: 28.05.2007 01:07
von Kaeru Gaman
kleiner demo-code zur benutzung der maus im windowed screen:
http://www.purebasic.fr/german/viewtopic.php?t=11280
Verfasst: 28.05.2007 09:48
von Dark Skillu
Danke Dein Code funktioniert Edel, aber ich hzabe das problem, dass ich die Box nicht außerhalb des Sprites bewegen kann, also wie soll ich das Fenster schließen und ich würde gerne einfach nur die normale Standard maus haben. Vielleicht habe ich mich auch falsch ausgedrückt. Außerdem werden die Buttons nciht mehr angezeigt.Ich würde gerne einfach in dem Text-Gadget die Koordinaten meiner Maus angegeben haben.
Verfasst: 28.05.2007 10:48
von Olaf
Probiers mal so:
Code: Alles auswählen
InitSprite()
If OpenWindow(0,0,0,410,310,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
If OpenWindowedScreen(WindowID(0),5,5,320,300,0,85,5)
CreateSprite(0,20,20)
EndIf
ButtonGadget(1,340, 10,60,20,"Button 1")
ButtonGadget(2,340, 40,60,20,"Button 2")
ButtonGadget(3,340, 70,60,20,"Button 3")
TextGadget (4,340,110,60,30 ,"")
EndIf
StartDrawing(SpriteOutput(0))
Box(0, 0, 20, 20,RGB(105, 0, 0))
StopDrawing()
Repeat
If WindowEvent() = #PB_Event_CloseWindow
quit=1
EndIf
ClearScreen(RGB(0,0,0))
DisplaySprite(0, x-5, y-5)
FlipBuffers()
x = WindowMouseX(0)
y = WindowMouseY(0)
If x>=0 And x<=410 And y>=0 And y<=310
SetGadgetText(4,Str(x)+ "," + Str(y))
Else
SetGadgetText(4,"-,-")
EndIf
Until quit=1
Verfasst: 28.05.2007 19:34
von Dark Skillu
Danke funktioniert, wie schaffe ich es, dass außerhalb des Sprites meine Maus normal ist und innerhalb des Sprites ein Fadenkreuz?Ich habe mir gedacht ich setze an die Koordinaten des Mauszeigers ein Bild/Sprite müsste aber ja irgendwie erreichen, dass der Mauszeiger selber nicht mehr dargestellt wird, sieht ja nicht so toll aus, wenn über dem Fadenkreuz der Mauszeiger immer ist ...
Ich habe jetzt versucht, dass eine gezeichnete Box von links nach rechts über den Sprite "wandert", dabei wird die Position auf der Y-Position per Zufall bestimmt, anstatt der Box würde ich dann nachher z.B. nen Moorhuhn nehmen etc. . Mein Problem ist, dass die Box wenn sie rechts angekommen ist , links wieder neu erscheint und ich es nicht schaffe, dass mehrere Bpxen erscheinen.
Verfasst: 29.05.2007 00:19
von Kaeru Gaman
> Danke funktioniert, wie schaffe ich es, dass außerhalb des Sprites meine Maus normal ist und innerhalb des Sprites ein Fadenkreuz?
du solltest dir meinen code zumindest einmal ansehen.
außerdem:
windowed screen mit gadgets drumrum ist nicht gerade einfach.
wenn du dich zum ersten mal mit sprites auseinandersetzt, solltest du mit nem fullscreen arbeiten.
dann hast du ein problem weniger und kannst dich erstmal in die screen-programmierung einarbeiten.
wann du das wirklich draufhast, kannst du dich immernoch mit dem komplexen thema
auseinandersetzen, einen screen auf ein window zu integrieren.