Klaus,
ich glaube, was additionsToViewer etc. angeht, bist du auf der squeak-dev-Liste besser aufgehoben - du schreibst ja selbst, du willst einen Morph erfinden...
Ich hab grad mal selbst experimentiert. Einer eigenen Morphklasse einen Slot hinzuzufügen, ist kein Problem, einer bestehenden Klasse eine neue Viewer-Kategorie, auch nicht, aber da dann einen Slot oder einen Befehl hineinzubekommen, geht nicht, jedenfalls nicht beim SketchMorph. Hm...
Das hängt mit der Sprachunterstützung zusammen.
Inwiefern? Was weißt du noch zu dem Thema? Kann hier jemand mal den Begriff Vokabular/EToy-Vokabular etwas näher erläutern?
Zu deiner letzten Mail:
- Wie bekomme ich die Mausposition in einem Script?
Playfield hat in der Viewer-Kategorie playfield die aktuellen Mauskoordinaten.
- Wie kann ich ein Skript triggern, wenn das Objekt gedreht wird?
Indem du in seinem Owner (einem Spielfeld/Playfield) einen Test "Objekts richtung ~= Objekts alteRichtung" einbaust? - wobei Objekts alteRichtung eine Instanzvariable von Objekt ist - Instanzvariablen sind auch der Schlüssel zur Schleifenprogrammierung.
- Wie verhindert man einen Resize?
Im Menü aller Morphe findest du "be locked/geschützt" und "resist being picked up/verankert"
- Wie kann man einen eigenen Morph-Typ dem Objekt-Manager zufügen?
http://minnow.cc.gatech.edu/squeak/2998: Add a class side method #descriptionForPartsBin (browse implementors). This method returns a description of how to create and present a new morph. If you want several different entries in the Objects Tool, you can use #supplementaryPartsDescriptions. Wirf auch einen Blick in die Kategorie Morphic-Demo.
- Was macht man genau mit einem Skriptfenster?*
ich glaub, es unterscheidet sich vom Spielfeld vor allem dadurch, dass es eigene, *private* Stop-Step-Go buttons hat. So kannst du mehrere unabhängige Skriptingbereiche in einem Projekt oder zb GeeMailMorph haben.
- Wie sorgt man dafür, dass Größenänderungen an die Submorphs weitergegeben werden?
- Umgekehrt: Wie sorgt man dafür, dass ein Resize im Submorph an den Besitzer weitergegeben wird ODER
Du musst wohl neue Morphklassen ableiten, die sich in ihrer Step-Methode entsprechend verhalten. Oder aber du befasst dich mit layoutPolicy/Tablelayouts (z.B. im Menü eines Rechtecks, gibt ein Tutorial dazu auf Squeakmap), vielleicht reicht das ja schon?
wie sorgt man dafür, dass man einen Submorph nicht selektieren kann.
Schwierig - selektieren von Morphs explizit zu verbieten... ist irgendwie nicht squeaklike - ALLES in Squeak lässt sich selektieren, inspizieren, kopieren -
- Wenn ich Morphs zusammensetze: Welche Koordinate verwende ich? Offensichtlich verwendet man in drawOn absolute Screenkoordinaten. Wenn ich aber mit addMorph einen Morph hinzufüge, erscheint dieser an einer 'position' relativ zur oberen linken Ecke des Morphs.
Das scheint nur so. Wenn du deinem Morph *keine* layoutPolicy zuweist und ihn *vor* dem addMorph:xyz schon verschiebst, erscheint der neu hinzugefügte xyz an 0/0 auf dem Screen. Im Morph-Protokoll geometry findest du alles, was du für relative/globale Koordinaten brauchst.
- Wie kann ich eigenes Vokabular definieren? Ich will einen Morph (z.B. "Koordinatensystem") definieren. Der soll "skalieren" u.ä. "verstehen"
Zuerst mal geht's doch darum, eine *Message* "skalieren: faktor" zu implementieren?
Schon mal Diego Gomez' Plotmorph probiert (bekommst du über Weltmenü->Öffnen->SqueakMap-Packageloader)
Was hast du eigentlich vor? Willst du mit EToy einen Graph-Editor bauen? KRASS... Mich würd auch interessieren, wo, mit welcher Altersgruppe etc. du Squeak einsetzt.
Viele Grüße Andreas
Klaus Füller schrieb:
Esther Mietzsch wrote:
Hallo Klaus,
Am Sunday 21 November 2004 22:48 schrieb Klaus Füller:
Fragen zu EToys
...
- Wie kann ich eigenes Vokabular definieren? Ich will einen Morph (z.B. "Koordinatensystem") definieren. Der soll "skalieren" u.ä. "verstehen"
... (Bitte schaut noch einmal am Ende dieser Mail. Ich begründe dort noch einmal, warum ich eigenes Vokabular definieren will...)
Das ist die Kernfrage, ich kann sie nun genauer stellen:
Eine Morph-Klasse kommuniziert mit dem EToy-System über die Klassenmethode #additionsToViewerCategories. Diese Methode gibt eine Liste von Einträgen mit, wie sie im "Viewer" erscheinen sollen. Das verstehe ich.
Allerdings gelingt es mit nicht, Änderungen an dieser Liste vorzunehmen. Neueinträge erscheinen nicht im Viewer; Geänderte Einträge verschwinden aus dem Viewer. Das hängt mit der Sprachunterstützung zusammen. Neuerdings gibt es eine andere Möglichkeit, dass ein Morph über ein "Vocabulary" (oder ist es ein "EToyVocabulary"?) irgendwie dem Viewer sagt ... und da versiegt meine Intuition.
Ein Hinweis gibt es von Ned Konz in squeak-dev am 24.Juni 04. Ich verstehe den zweiten Teil aber nicht richtig.
Zusammenfassung: Ich will einen Morph erfinden, der neue Einträge im Viewer macht, die man in "Kacheln" verwenden kann, um Programme zu schreiben. Ich möchte das in der / für die neuste Version schreiben, wenn #additionsToViewerCategories veraltet ist, will ich es überhaupt nicht verwenden.
Was will ich damit?
Mir ist immer noch nicht ganz klar, ob die Scripting-Umgebung in Squeak dem Einstein-Spruch folgt "Make it as simple as possible *but not simpler* . Mir ist nicht klar, wie ich beispielsweise eine Schleife programmieren lassen kann. Beispielsweise könnte ich die Schülerinnen Programme schreiben lassen, die Wertetabellen und Säulendiagramme von Funktionen anzeigen.
HILFE!
klaus