Ereignisübertragung in einer Morphic-GUI

9

Ich habe ein Bild für eine Squeak Morphic GUI, die einige transparente Teile enthält und daher keine Mausereignisse usw. akzeptieren soll, sondern nur sichtbar sein soll, aber es muss vor anderen Morphs sichtbar sein.

Deshalb dachte ich, es wäre nützlich, die erscheinenden Mausereignisse auf die zugrunde liegenden Morphs zu übertragen. Kennt jemand eine Lösung für mein Problem oder einen anderen Vorschlag, um es zu lösen.

%Vor%

Ich hoffe, das veranschaulicht mein Problem.

    
hanneswurstes 19.01.2010, 14:06
quelle

2 Antworten

2

Das Beste, woran ich denken kann, ist etwas in den folgenden Zeilen (in aufsteigender Reihenfolge der Glätte und abnehmender Reihenfolge der Wahrscheinlichkeit, zu arbeiten)

  1. Zeichnen Sie das Ereignis auf, legen Sie das transparente Bild weg und wiederholen Sie das Ereignis. Dies scheint ein ineffizienter und schlechter Weg zu sein.
  2. Behalten Sie den Überblick über das, was sich hinter Ihrem transparenten Bild verbirgt, und leiten Sie das Ereignis dorthin weiter. Ich bin mit den fraglichen Bibliotheken nicht vertraut, also weiß ich nicht, ob es so geht. Wenn Sie die Kontrolle über die anderen Ebenen haben, ist dies wahrscheinlich der beste Weg. (Sie können ihre 'a mouse event placed' Funktionen mit diesem mouseDownEvent direkt aufrufen, obwohl Sie immer noch identifizieren müssen, welcher sie erhalten würde.)
  3. Deklarieren Sie es einfach als etwas, das keine Mausereignisse erhält, egal welche Stufe verfügbar ist. OSD-Fenster neigen dazu, dies zu tun, ich bin mir nicht sicher, wie. Wenn du es so machst, würde ich es empfehlen ... aber da du diese Frage stellst, kannst du wahrscheinlich nicht.
zebediah49 13.07.2010 21:21
quelle
2

Standardmäßig werden Morphic-Mausereignisse im obersten Morph behandelt. Ein Eltern-Morph kann jedoch #mouseDown auf Kinder unter Verwendung von #mouseDownPriority abfangen.

Ihr transparentes Bild erhält alle Klicks, weil es am höchsten ist. Schauen Sie sich #rejectsEvent: an. Es kombiniert nur #isLocked und #visible , um Ereignisse abzulehnen. Sie können dies überschreiben, um Ereignisse abzulehnen, selbst wenn sie sichtbar sind.

Zum Beispiel:

%Vor%     
Marcel Taeumel 18.07.2012 16:07
quelle