2. Ereignisse und Interaktivität
In dieser Lektion erhalten Sie
Informationen über:
Verwenden von Tastaturereignissen in
Ihrem Programm.
Verwenden von Mausereignissen in
Ihrem Programm.
3. Einführung in Ereignisse
Diese Lektion führt Sie in Ereignisse ein, mit denen Sie Ihren
Small Basic-Programmen Interaktivität hinzufügen können.
Mit anderen Worten, Sie können in
Small Basic interaktive Programme erstellen,
indem Sie Ereignisse definieren, die eine Aktion
in Reaktion auf Benutzereingaben auslösen.
Interaktivität bezeichnet hier Ereignisse, die eine Aktion
auslösen, z. B. wenn ein Benutzer mit einer Maustaste
klickt oder eine Taste auf der Tastatur drückt.
4. Tastaturereignisse
Tastaturereignisse rufen eine Aktion hervor, wenn ein Benutzer eine Taste
drückt oder freigibt. Es gibt zwei Tastaturereignisse: KeyDown und KeyUp.
Diese Ereignisse sind als Prozesse des GraphicsWindow-Objekts definiert.
KeyUp löst ein Ereignis aus, wenn
ein Benutzer eine Taste auf der
Tastatur freigibt.
KeyDown löst ein Ereignis aus,
wenn ein Benutzer eine Taste
auf der Tastatur drückt.
5. Tastaturereignisse
Betrachten wir die Tastaturereignisse in Small Basic mithilfe eines
einfachen Programms, mit dem im Grafikfenster eine Form rotiert
wird, wenn Sie eine Taste auf der Tastatur drücken.
In diesem Beispiel drücken Sie die
EINGABETASTE, um eine rechteckige Form
im Grafikfenster zu rotieren. Wenn Sie die
Taste freigeben, wird das Rechteck zurück
in die ursprüngliche Position rotiert.
6. Mausereignisse
Wie im Fall der Tastaturereignisse, können
Sie in Small Basic Programme erstellen, die
mit mausbasierten Ereignissen funktionieren.
Mausereignisse generieren Aktionen im Programm,
wenn ein Benutzer mit einer Maustaste klickt.
MouseDown löst ein Ereignis aus, wenn
ein Benutzer mit einer Maustaste klickt.
MouseUp löst ein Ereignis aus, wenn
ein Benutzer eine Maustaste freigibt.
MouseMove löst ein Ereignis aus,
wenn ein Benutzer den Mauszeiger
im Grafikfenster bewegt.
Schauen wir uns an, wie
wir diese Ereignisse in einem
Programm verwenden können.
7. Fassen wir zusammen…
Herzlichen Glückwunsch! Sie haben
Folgendes gelernt:
Tastaturereignissen in Ihrem Programm verwenden.
Mausereignisse in Ihrem Programm verwenden.
8. Zeigen Sie, was Sie wissen
Schreiben Sie ein Programm, um mittels der
folgenden Schritte Mausereignisse vorzuführen:
Erstellen Sie eine Benutzeroberfläche
mittels des GraphicsWindow-Objekts.
Fügen Sie Schaltflächen ein, um Formen
mittels des Controls-Objekts zu zeichnen
(siehe 3.5).
Verwenden Sie die Ereignisse MouseDown
und MouseMove, um im Zeichenbereich
Formen zu zeichnen.
Verwenden Sie die Anweisungen If und
Else, um die Aktionen zu definieren, die
durch die Mausklicks des Benutzers
ausgelöst werden.
Sie fügen das Rechteck im Editor-Fenster hinzu, indem Sie den AddRectangle-Prozess für das Shapes-Objekt verwenden.Sie legen den Ort des Rechtecks fest, indem Sie den Move-Prozess verwenden.Sie identifizieren den Schlüssel, mit dem das Rechteck rotiert werden kann. Sie deklarieren den Schlüssel und weisen diesem einen geeigneten Variablennamen zu.Sie verwenden das KeyDown-Ereignis des GraphicsWindow-Objekts und deklarieren eine Subroutine, um die Form zu rotieren, wenn ein Benutzer die Taste drückt.In vergleichbarer Weise verwenden Sie das KeyUp-Ereignis und deklarieren eine Subroutine, um die Form zu rotieren, wenn ein Benutzer die Taste freigibt.Wenn Sie auf der Symbolleiste auf Ausführen klicken, wird das Programm ausgeführt. Es wird einGrafikfenster mit einem Rechteck im Zentrum angezeigt. Wenn Sie die EINGABETASTE drücken, wird das Rechteck rotiert. Wenn Sie die Taste EINGABE freigeben, wird das Rechteck zurück in die ursprüngliche Position rotiert.Code:GraphicsWindow.Height = 300GraphicsWindow.Width = 300GraphicsWindow.Title = „Grafikfenster“shape1 = Shapes.AddRectangle(100, 50)Shapes.Move(shape1, 100, 125)return = „Eingabe“GraphicsWindow.KeyDown = keydownGraphicsWindow.KeyUp = keyupSub keydownIf GraphicsWindow.LastKey = return thenShapes.Rotate(shape1, 90)EndIfEndSubSub keyupIf GraphicsWindow.LastKey = return thenShapes.Rotate(shape1, 0)EndIfEndSub
Lösung:GraphicsWindow.Hide()w = 620h = 450GraphicsWindow.CanResize = „False“GraphicsWindow.Width = wGraphicsWindow.Height = hGraphicsWindow.Top = (Desktop.Height-h) / 2GraphicsWindow.Left = (Desktop.Width-w) / 2GraphicsWindow.Show()GraphicsWindow.Title = „Ereignisse und Interaktivität“GUI()Controls.ButtonClicked = MouseActionSub GUIGraphicsWindow.DrawRectangle(10, 10, 600, 320) GraphicsWindow.DrawRectangle(10, 340, 200, 100)GraphicsWindow.DrawRectangle(10, 340, 600, 100)GraphicsWindow.DrawRectangle(370, 340, 150, 100) Triangle = Controls.AddButton(„Dreieck“, 40, 345)Controls.SetSize(Triangle, 120, 30)Rectangle = Controls.AddButton(„Rechteck“,40,375)Controls.SetSize(Rectangle, 120, 30) Circle = Controls.AddButton(„Kreis“, 40, 405)Controls.SetSize(Circle, 120, 30)Rotate = Controls.AddButton(„Rotieren“, 230, 360)Controls.SetSize(Rotate, 60, 60)Zoom = Controls.AddButton(„Zoom“, 290, 360)Controls.SetSize(Zoom, 60, 60)FreeHand = Controls.AddButton(„Zeichnen“, 390, 360)Controls.SetSize(FreeHand, 60, 60) Clear = Controls.AddButton(„Löschen“, 450, 360)Controls.SetSize(Clear, 60, 60)Exit = Controls.AddButton(„Beenden“, 530, 360)Controls.SetSize(Exit, 60, 60) EndSubSub MouseActionx = GraphicsWindow.MouseXy = GraphicsWindow.MouseYGraphicsWindow.PenWidth = 1 If x > 40 And x < 160 ThenGraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor() If y > 345 And y < 375 Thendraw = 0j = 0z = 1tri = Shapes.AddTriangle(20, 20, 100, 100, 150, 20)Shapes.Move(tri, 80, 100)EndIfIf y > 375 And y < 405 Thendraw = 0 j = 0 z = 2 rect = Shapes.AddRectangle(100, 100)Shapes.Move(rect, 250, 150)EndIf If y > 405 And y < 435 Then draw = 0 j = 0 z = 3 circ = Shapes.AddEllipse(100, 100)Shapes.Move(circ, 400, 150)EndIfEndIfIf y > 360 And y < 420 ThenIf x > 230 And x < 290 Then draw = 0 If z = 1 ThenShapes.Rotate(tri, 30 + m)ElseIf z = 2 ThenShapes.Rotate(rect,30 + m) ElseIf z = 3 ThenShapes.Rotate(circ, 30 + m) EndifEndifEndif m = m + 30 EndIfIf x > 290 And x < 390 Then draw = 0 i = 0.1 + jIf i < 0.4 ThenIf z = 1 ThenShapes.Zoom(tri, 1 + i, 1 + i)ElseIf z = 2 ThenShapes.Zoom(rect, 1 + i, 1 + i)ElseIf z = 3 Then Shapes.Zoom(circ, 1 + i, 1 + i) EndIfEndIfEndIf j = j + 0.1EndIfEndIfIf x > 390 And x < 450 Then draw = 1 Paint()EndIfIf x > 450 And x < 510 Then draw = 0 j = 0GraphicsWindow.Clear() GraphicsWindow.BrushColor = „Blue“ GUI() draw = 0EndIfIf x > 530 And x < 590 Then draw = 0Program.End()EndIfEndIfEndSubSub PaintIfdraw = 1 ThenGraphicsWindow.MouseMove = MouseDragElseIf Mouse.IsLeftButtonDown ThenMouseAction() EndIfEndIfEndSubSub MouseDragIfdraw = 1 thenx = GraphicsWindow.MouseXy = GraphicsWindow.MouseYIf x > 10 And x < 600 And y > 10 And y < 320 ThenIf Mouse.IsLeftButtonDown ThenGraphicsWindow.DrawLine(OrgX, OrgY, x, y)EndIfEndIfOrgX = xOrgY = yEndIfEndSub