Benutzereingabe - Cinderella Dokumentation
Description: The user's guide to the Interactive Geometry Software Cinderella

Zum Inhalt

# Benutzereingabe

Manchmal ist es notwendig, Benutzereingaben durch die Maus oder die Tastatur explizit zu verarbeiten. Es gibt besondere Evaluierungszeiten „Mouse Down", „Mouse Up", „Mouse Click", „Mouse Drag" und „Key Typed" dafür (siehe Programm-Code eingeben). Diese Evaluierungszeiten werden genau dann erfasst, wenn die entsprechenden Ereignisse auftreten. Wenn man auf die entsprechenden Ereignisdaten reagieren möchte, gibt es mehrere Operatoren, die die Eingabedaten lesen.

### Maus und Tasten

#### Mausposition: `mouse()`

Beschreibung: Gibt einen Vektor zurück, der die aktuelle Position der Maus darstellt, wenn die Maus gedrückt wird. Der Vektor ist in homogenen Koordinaten angegeben (dies ermöglicht auch den Zugriff auf unendliche Objekte). Wenn man die zweidimensionalen euklidischen Koordinaten der Mausposition benötigt, kann man auf diese über `mouse().xy` zugreifen.

#### Tastatureingabe: `key()`

Beschreibung: Gibt eine Zeichenkette zurück, die das zuletzt eingegebene Zeichen enthält.

#### Ist eine bestimmte Taste gedrückt: `iskeydown(<int>)`

Beschreibung: Dieser Operator gibt einen booleschen Wert zurück, der wahr ist, wenn eine bestimmte Taste gedrückt wird. Die betreffende Taste wird durch die ganze Zahl im Argument angegeben. Dieser Operator kann zum Beispiel verwendet werden, um zu bestimmen, ob die Umschalttaste gedrückt wird. Die Codes für Tasten sind normalerweise 65, 66, 67, ... für 'A', 'B', 'C',... Codes für 'Umschalt', 'Strg' und 'Alt' sind normalerweise 16, 17, 18.

#### Liste aller gedrückten Tasten: `keydownlist()`

Beschreibung: Dieser Operator gibt eine Liste der Codes aller gedrückten Tasten zurück. Eine interessante Anwendung der Keydownliste ist im Kapitel zu MIDI-Funktionen angegeben, wo Sie ein Beispiel für ein Tastaturklavier finden.

### AMS-Daten zur Schwerkraft

Auf Apple-Hardware kann CindyScript auf den Schwerkraftsensor eines Laptops zugreifen und seine relative Ausrichtung im Raum bestimmen. Der Schwerkraftsensor gibt einen dreidimensionalen Vektor zurück.

#### Abrufen von Raw-AMS-Daten: `amsdata()`

Beschreibung: Dieser Operator gibt die Rohdaten des AMS-Sensors zurück.

#### Abrufen kalibrierter AMS-Daten: `calibratedamsdata()`

Beschreibung: Dieser Operator gibt eine kalibrierte Version der AMS-Sensordaten zurück. Die kalibrierten Daten sind ein Vektor der Einheitslänge, der die Ausrichtung des Computers im Raum darstellt.

### Erstellen benutzerdefinierter Symbolleisten in einer Ansicht

Cinderella kann zum Exportieren interaktiver Arbeitsblätter auf eine HTML-Seite verwendet werden. Sehr häufig ist es wünschenswert, nicht nur eine interaktive Konstruktion zu exportieren, sondern auch eine Reihe von Konstruktionswerkzeugen zusammen mit ihr (wie Schaltflächen zum Konstruieren von Punkten, Linien oder Kreisen). Durch die Verwendung der folgenden Gruppe von CindyScript-Operationen ist es leicht möglich, benutzerdefinierte Symbolleisten zu erstellen (und zu entfernen), die sich in einem Applet-Fenster befinden.

Symbolleisten sind besonders wichtig für die Erstellung interaktiver Schülungsaufgaben. Ein Beispiel dafür ist in Interaktive Aufgaben gegeben.

#### Erstellen einer benutzerdefinierten Symbolleiste: `createtool(<string>,<int>,<int>)`

#### Erstellen einer benutzerdefinierten Symbolleiste: `createtool(<list>,<int>,<int>)`

Beschreibung: Erstellt ein oder mehrere Symbolleisten-Schaltflächen in einer Cinderella-Ansicht. Das erste Argument ist entweder eine Zeichenkette, die ein einzelnes Konstruktionswerkzeug beschreibt, oder eine Liste oder Matrix von Zeichenketten, die eine gesamte Symbolleiste beschreiben. Die anderen beiden Argumente beschreiben die Position relativ zu einer Bildschirm-Ecke in Pixelabständen. Normalerweise befindet sich eine createtool-Anweisung im init-Slot des Skript-Editors.

Die folgenden Zeichenfolgenbezeichner, die den Konstruktionswerkzeugen entsprechen, sind verfügbar:

- Allgemein: `"Move"`, `"Delete"`
- Punkte: `"Point"`, `"Intersection"`, `"Mid"`, `"Center"`
- Linien: `"Line"`, `"Segment"`, `"Line Through"`, `"Parallel"`, `"Orthogonal"`, `"Angle Bisector"`
- Kreise: `"Circle"`, `"Circle by Radius"`, `"Compass"`, `"Circle by 3"`, `"Arc"`
- Kegelschnitte: `"Conic by 5"`, `"Ellipse"`, `"Hyperbola"`, `"Parabola"`
- Spezial: `"Polar Point"`, `"Polar Line"`, `"Polygon"`, `"Reflection"`, `"Locus"`
- Messen: `"Distance"`, `"Angle"`, `"Area"`

Es ist auch möglich, Konstruktionswerkzeuge aus CindyLab hinzuzufügen:

- Lokal: `"Mass"`, `"Velocity"`, `"Rubberband"`, `"Spring"`, `"Coulomb"`
- Umgebungen: `"Gravity"`, `"Sun"`, `"Floor"`, `"Bouncer"`, `"Magnet"`

Die Position der Werkzeuge wird relativ zur Konstruktionsansicht festgelegt. Standardmäßig wird die obere linke Ecke gewählt. Durch Verwendung des Modifizierers `reference` können Sie auch die anderen Ecken auswählen. Zulässige Werte für diesen Modifizierer sind `"UL", "UR", "LL", "LR"`. Hier steht der erste Buchstabe für oben/unten und der zweite Buchstabe für links/rechts.

Beispiele: Der einfachste Gebrauch ist zum Beispiel durch das folgende Codestück gegeben. Das Werkzeug, das erstellt wird durch

    createtool("Move",2,2);

Kompliziertere Beispiele, die Symbolleisten mit mehreren Werkzeugen erstellen, sind unten angegeben

    createtool(["Move","Point","Line","Circle"],2,2);

    createtool(["Move","Point","Line","Circle"],2,2,flipped->true);

    createtool(
     [
      ["Move","Point","Line","Circle"],
      ["Parallel","Orthogonal","Circle by Radius","Compass"],
      ["Distance","Angle","Area","Polygon"],
     ]
    ,2,2,flipped->false);

    createtool(

    ...same as example above...

    ,reference->"LR");

Modifizierer: Der createtool-Operator kann mit den Modifizierern umgehen, die in der folgenden Tabelle zusammengefasst sind:

Modifizierer | Parameter | Effekt
--- | --- | ---
`reference` | `<string>` | Referenzposition
`flipped` | `<bool>` | `flipped->true` tauscht Zeilen und Spalten aus
`space` | `<int>` | Abstand (in Pixeln) zwischen Werkzeugen

#### Entfernen eines Werkzeugs aus einer benutzerdefinierten Symbolleiste: `removetool(<string>)`

Beschreibung: Entfernt ein Werkzeug aus der benutzerdefinierten Symbolleiste.

#### Entfernen aller benutzerdefinierten Symbolleisten: `removetools()`

Beschreibung: Entfernt alle Werkzeuge aus der benutzerdefinierten Symbolleiste.

Diese Seite wurde automatisch mit KI (Claude) übersetzt und wartet noch auf Überprüfung. → Alle KI-übersetzten Seiten