2010-11-19 2 views
0

Ich habe eine benutzerdefinierte Komponente mit ein paar Texteingabefeldern (unter anderem), die als die Zeilenkomponenten in einer Struktur verwendet werden. Ich musste meine eigene Drag & Drop-Behandlung schreiben und habe den Start-Handler (den ich zuletzt hatte) fast beendet, indem ich mouseDown als das Ereignis verwendet habe, um auszustoßen.Flex 3: Ermitteln, ob ein Ereignisziel ein Nachkomme einer Komponente ist

Es funktioniert grundsätzlich, aber wenn der Baum weit genug erweitert ist, dass eine Bildlaufleiste zeigt, zieht mit der Bildlaufleiste eine Reihe des Baumes gleichzeitig! Nicht das gewünschte Verhalten.

Im Debugger kann ich sehen, dass wenn eine Zeile der Struktur gezogen wird das currentTarget der Baum selbst ist, und das Ziel ist die textInput-Komponente. Mit Blick auf die Eltern dieser Komponente kann ich meine benutzerdefinierte Komponente (die den textInput enthält) ein paar Ebenen höher sehen.

Meine Frage ist, gibt es eine einfache Möglichkeit zu bestimmen, ob dieses Ziel von meiner Komponente abstammt, so dass ich nur dann einen Ziehen initiieren kann, wenn das der Fall ist?

event.target funktioniert übrigens nicht .... was ich irgendwie erwartet habe, weil es nicht geht!

Danke,

Mike

Antwort

1

Sie könnten einen 'Marker' Schnittstelle (das heißt eine ohne Methoden oder Eigenschaften) erstellen, und dann

if (yourObject is IYourInterface) { 

in Ihrem Code fragen.

+0

Also meinst du eine Schnittstelle erstellen, dann meine Komponente implementieren? Dann wird das Ziel des Ereignisses, das ein Unterelement meiner Komponente ist, diese Schnittstelle sein? – Nic

+0

Danke für die Antwort, übrigens .... – Nic

+0

Yup. Es ist eine ziemlich übliche Art, Dinge zu tun. –

1

Verwenden Sie myComponent.contains(child).

S.S: Es gibt auch true zurück, wenn myComponent == child.

Verwandte Themen