[AS3] addEventListener απορία

ActionScript και Flex Προγραμματισμός

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
DeveloperGR
Δημοσιεύσεις: 67
Εγγραφή: 08 Νοέμ 2009 22:59

[AS3] addEventListener απορία

Δημοσίευση από DeveloperGR » 19 Νοέμ 2009 20:43

Καλησπέρα ,

Δημιουργώ δυναμικά 5 labels[με text 1-5 αντιστοιχα] και με την συνάρτηση "addEventListener" εισάγω εναν handler αλλης συνάρτησης ώστε να καλειται η συνάρτηση αυτη οταν γινεται κλικ πάνω στα labels.....πώς γίνεται ομως τώρα να εμφανισω σε μηνυμα το text του κάθε Label;;;;;

Σας ευχαριστώ Προκαταβολικά.

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

[AS3] addEventListener απορία

Δημοσίευση από HeRu » 20 Νοέμ 2009 08:58

Μέσα στο event listener, το event object σου δίνει πρόσβαση στο text field που έγινε click.
π.χ.

Κώδικας: Επιλογή όλων

function eventHandler(event:MouseEvent):void
{
   txt1 = event.target.text;
}

DeveloperGR
Δημοσιεύσεις: 67
Εγγραφή: 08 Νοέμ 2009 22:59

[AS3] addEventListener απορία

Δημοσίευση από DeveloperGR » 20 Νοέμ 2009 12:16

Ωραια! έχω μια αλλη απορία...

Εχω φτιάξει ενα Component οπου έχω 2 labels κ ενα canvas....πως γίνεται να πάρω το handle ολου του αντικειμένου ώστε να μπορώ να πάρω την τιμή και των 2 labels και το ID Name του Canvas [ τα οποια φαντάσου πως αλλάζουν δυναμικά ονομα ID1 , ID2 κτλ ]

Σε ευχαριστώ προκαταβολικά!

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

[AS3] addEventListener απορία

Δημοσίευση από HeRu » 20 Νοέμ 2009 14:43

Αλλάζουν δυναμικά τα id των labels μέσα σε κάθε canvas ?

Αν μπορείς εξήγησε λίγο το use case σου.

DeveloperGR
Δημοσιεύσεις: 67
Εγγραφή: 08 Νοέμ 2009 22:59

[AS3] addEventListener απορία

Δημοσίευση από DeveloperGR » 20 Νοέμ 2009 15:39

ωραια!

λοιπον θέλω οταν κανεις κλικ στο component μου που εχω σχεδιασει εγω κ το οποιο αποτελειται απο ενα canvas και 2 labels εκ των οποιον το ενα label καλυπτει ολο το Component που σημαινει οτι event κλικ μπορει να γινει μονο σε αυτο , θελω λοιπον οταν κανεις κλικ πανω στο Component που για τους λογους που αναφερα παραπανω θα πιασει μονο το event κλικ του label να μπορω και πως γινεται αυτο να εχω access σε ολο το component , π.χ να μπορώ να πάρω την τιμή του text του αλλου label το οποιο βρισκεται στο στοιχειο ελέγχου που εχω δημιουργήσει..

π.χ με το txt1 = event.target.text; το target ειναι το Handle του label μου , δεν μπορω ή πως μπορώ να χειριστώ ολο το Component μου και όχι μονο το Label;;;;

Σε Ζάλησα;;; :D

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

[AS3] addEventListener απορία

Δημοσίευση από HeRu » 20 Νοέμ 2009 18:24

Μπορείς να κάνεις μέσα στον handler:

Κώδικας: Επιλογή όλων

var canvas:DisplayObject = event.target.parent;
txt1 = canvas.textField1.text;
txt2 = canvas.textField2.text;

DeveloperGR
Δημοσιεύσεις: 67
Εγγραφή: 08 Νοέμ 2009 22:59

[AS3] addEventListener απορία

Δημοσίευση από DeveloperGR » 20 Νοέμ 2009 19:11

Το δοκίμασα μια στα γρηγορα αλλα δεν μου δουλευει :S :S

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

[AS3] addEventListener απορία

Δημοσίευση από HeRu » 23 Νοέμ 2009 10:52

Σου βγάζει κάποιο error ?

Δοκίμασε να το κάνεις cast στο είδος του component.

Κώδικας: Επιλογή όλων

var canvas:MyComponent = event.target.parent as MyComponent;
txt1 = canvas.textField1.text;
txt2 = canvas.textField2.text;

DeveloperGR
Δημοσιεύσεις: 67
Εγγραφή: 08 Νοέμ 2009 22:59

[AS3] addEventListener απορία

Δημοσίευση από DeveloperGR » 23 Νοέμ 2009 19:05

Εχω την εξής συνάρτηση που καλέιτε κάθε φορά που γίνετε κλικ πάνω στο component μου...

Ο EventListener εχει τοποθετηθεί σε ενα απο τα δύο Labels και ειναι αυτο το Label που ειναι πάντα focus [ εχει μεγαλύτερο Z order απο όλα ] , η συνάρτηση μου εχει ως εξης :

private function GetTestClickEvent ( e:MouseEvent ):void
{

var c:TestComponent = e.target.parent as TestComponent;
Alert.show( "Ekanes Click! " + c.LbSurName.text );
}

Αλλα συμβαινει κάποιο error και δεν μου εμφανιζεται ποτέ μηνυμα , εαν βγάλω τις 2 αυτες γραμμες και βάλω ενα τυχαιο Alert μηνυματος τοτε καλειται κανονικά η συναρτηση...

Τι λές να φταιει;;; καμμια ιδέα;;

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

[AS3] addEventListener απορία

Δημοσίευση από HeRu » 24 Νοέμ 2009 09:23

Αυτός ο κώδικας που βρίσκεται ? Εννοώ σε πιο timeline/class ?

Αν είναι μέσα στο ίδιο το component, δοκίμασε σκέτο το όνομα του άλλου textfield.

Κώδικας: Επιλογή όλων

private function GetTestClickEvent ( e:MouseEvent ):void
{
Alert.show( "Ekanes Click! " + LbSurName.text );
}

DeveloperGR
Δημοσιεύσεις: 67
Εγγραφή: 08 Νοέμ 2009 22:59

[AS3] addEventListener απορία

Δημοσίευση από DeveloperGR » 24 Νοέμ 2009 16:55

Αυτός ο κώδικας βρίσκεται στην κλάση[π.χ main.as] οπου δημιουργώ δυναμικά Components τύπου TestComponent.....επισης μιας κ το ανεφερες μπορώ κάπως να βάλω κώδικα στο Component και να μου επιστρέφει την τιμή του Label 2 όταν κάνω κλικ στο Label 1??? κάπως να κάνω extend την κλάση Label δηλ και εαν αυτο γινεται...

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

[AS3] addEventListener απορία

Δημοσίευση από HeRu » 24 Νοέμ 2009 17:50

Γιατί τότε δεν βάζεις τον event dispatcher να είναι ολόκληρο το component και όχι το label ?

Μπορείς να κάνεις assign μια class σε ένα component/movieclip μέσα από την library.

DeveloperGR
Δημοσιεύσεις: 67
Εγγραφή: 08 Νοέμ 2009 22:59

[AS3] addEventListener απορία

Δημοσίευση από DeveloperGR » 25 Νοέμ 2009 16:53

Ο λόγος ειναι οτι το label ειναι εχει μεγαλύτερο z order απο όλα τα υλοποιπα components κ καλύπτει ολο το width & height του Component , με αποτέλεσμα απο ολο το component να ειναι clickable μονο το συγκεκριμενο label.... υπάρχει καποιος τρόπος ώστε να μην γινετε κλικ το συγκεκριμένο label κ το κλικ να "πιάνει" το υπολοιπο component απο πίσω;;;;; ή γενικά κάποια αλλη λύση;;

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

[AS3] addEventListener απορία

Δημοσίευση από HeRu » 26 Νοέμ 2009 10:21

Εκεί που βάζεις το event listener στο label, βάλε το σε όλο το component, έτσι θα γίνει ολόκληρο clickable.

πχ

Κώδικας: Επιλογή όλων

myComponent.label1.addEvent...
σε

Κώδικας: Επιλογή όλων

myComponent.addEvent...

Απάντηση

Επιστροφή στο “ActionScript και Flex Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες