2016-08-09 25 views
0

Ich brauche ein Grafikfenster, das eine Nachricht immer und immer wieder anzeigt, wenn ein Benutzer auf eine Schaltfläche klickt. Ich habe überall im Internet nach Anweisungen gesucht, wie man es nicht überlappen lässt. Dies ist höchstwahrscheinlich eine schnelle Lösung, aber idk. Plz Hilfe hier ist mein Code. Ich versuche, ein Clicker-Spiel zu machen, aber ich hasse es, als dieses Problem passiert ist.Wie kann ich Text in Small Basic NICHT überlappen?

GraphicsWindow.Height = 420 
GraphicsWindow.Width = 720 
GraphicsWindow.CanResize = "1" 

button = Controls.AddButton("Click for eggs",200,200) 
Controls.SetSize(button,100,100) 

eggs = 0 

Controls.ButtonClicked = buttonClicked 

Sub buttonClicked 

lastButtonClicked = Controls.LastClickedButton 

If lastButtonClicked = button Then 
eggs = eggs + 1 
GraphicsWindow.DrawText(0,0,"You have " + eggs + " eggs") 
ElseIf eggs >= 1 Then 
GraphicsWindow.BackgroundColor = "White" 
GraphicsWindow.DrawText(0,0,"You have " + eggs + " eggs") 
EndIf 
EndSub 

Antwort

0

Soweit ich weiß, die genaue Wirkung ist in Small Basic nicht möglich, weil die Dinge in die GraphicsWindow gezogen nicht bearbeitet oder entfernt werden können, ohne das gesamte Fenster zu löschen.

Stattdessen würde ich eine TextBox von Controls verwenden, die bearbeitet werden kann, nachdem sie erstellt wurden. Da die TextBox normalerweise vom Benutzer bearbeitet werden kann, habe ich auch Code hinzugefügt, um zu verhindern, dass der Inhalt bearbeitet wird.

Siehe meine Kommentare im Code für mehr wie das funktioniert.

GraphicsWindow.Height = 420 
GraphicsWindow.Width = 720 
GraphicsWindow.CanResize = "1" 

button = Controls.AddButton("Click for eggs",200,200) 
Controls.SetSize(button,100,100) 

eggs = 0 

Controls.ButtonClicked = buttonClicked 

' Create a text box to show the egg count 
myTextBox = Controls.AddTextBox(0, 0) 

' Ensure the user can't edit its contents by resetting the text if it changes 
Controls.TextTyped = updateEggs 

Sub updateEggs 
    ' Change the text of myTextBox 
    Controls.SetTextBoxText(myTextBox, "You have " + eggs + " eggs") 
EndSub 

Sub buttonClicked 
    lastButtonClicked = Controls.LastClickedButton 

    If lastButtonClicked = button Then 
    eggs = eggs + 1 
    updateEggs() 
    ElseIf eggs >= 1 Then 
    GraphicsWindow.BackgroundColor = "White" 
    updateEggs() 
    EndIf 
EndSub 

Diese GIF zeigt, wie die TextBox aussieht und funktioniert, und wie der Text nicht geändert werden kann:

GIF

0

Alles, was Sie tun müssen, ist Shapes.AddText zu verwenden. Dies wird eine Textform erstellen, die

Beispiel mit Shapes.SetText geändert werden können:

GraphicsWindow.Height = 420 
GraphicsWindow.Width = 720 
GraphicsWindow.CanResize = "1" 

Text = Shapes.AddText("You have 0 eggs") 

button = Controls.AddButton("Click for eggs",200,200) 
Controls.SetSize(button,100,100) 

eggs = 0 

Controls.ButtonClicked = buttonClicked 

Sub buttonClicked 
lastButtonClicked = Controls.LastClickedButton 

If lastButtonClicked = button Then 
eggs = eggs + 1 
Shapes.SetText(Text,"You have " + eggs + " eggs") 
EndIf 
EndSub 
Verwandte Themen