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

Code: Alles auswählen

Setgadgettext()
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.

Code: Alles auswählen

SetGadgetText(4,Str(x)+ "," + Str(y))
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 :wink:

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.