Access MovieClip mesa apo mia class?

Λύσεις προβλημάτων για το δημοφιλές πρόγραμμα κατασκευής παρουσιάσεων στο διαδίκτυο.

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

Απάντηση
Άβαταρ μέλους
paink1ller
Δημοσιεύσεις: 865
Εγγραφή: 21 Ιαν 2008 19:51

Access MovieClip mesa apo mia class?

Δημοσίευση από paink1ller » 31 Ιαν 2010 06:07

Παιδια εχω μια απορια-μικροπροβληματακι και αν μπορει καποιος να βοηθησει θα του ημουν ευγνωμον.

Λοιπον σε AS3 ας πουμε οτι εχω μια class που εχει κανει entend ενα movieclip το οποιο βρισκεται στην αρχικη timeline. Στην αρχικη timeline βρισκεται επισης ενα movieclip με instance name star_mc.
Θελω να το κουναω μεσα απο την class αλλα ενω δουλευει με this.parent.getChildAt(1).x +=10 οταν βαζω this.parent.star_mc +=10 μου πεταει

1119: Access of possibly undefined property star_mc through a reference with static type flash.display:DisplayObjectContainer.

Γνωριζει κανεις γιατι δεν μπορει να το καταλαβει με κατευθειαν το instαnce ονομα?

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

package {
	import flash.display.MovieClip;
	import flash.events.MouseEvent;

    public class btn_class extends MovieClip {

		public function btn_class() {
			this.addEventListener(MouseEvent.CLICK, clicked);
		}
		private function clicked(evt:MouseEvent):void {
		    this.parent.getChildAt(1).x+=10;
			//this.parent.star_mc.x+=10;
		}

	}
}
Ηobby: Shooting photons

Άβαταρ μέλους
Maradonna
Δημοσιεύσεις: 135
Εγγραφή: 07 Ιουν 2007 03:19
Τοποθεσία: Αθήνα
Επικοινωνία:

Access MovieClip mesa apo mia class?

Δημοσίευση από Maradonna » 31 Ιαν 2010 19:09

To movieclip που βρίσκεται μέσα στο flash IDE,θα πρέπει να έχει Lincage property ωστε να το καταλάβει η κλάση.

Πήγαινε στο library μέσα στο flash,βρές το star_mc,κάνε δεξί κλίκ επάνω του και επέλεξε properties.
Στο παραθυρακι,τσέκαρε την επιλογή export for actionscript,και δώσε ένα όνομα που θα αναγνωρίζει η κλάση.Ως base class άφησε το flash.display.MovieClip.
Στη συνέχεια μέσα στη κλάσση κάνε αναφορά στο instance αυτό και θα στο αναγνωρίσει.

Ενα σχετικό βοήθημα απο εξωτερική πηγή για ποιο πολλες λεπτομέρειες..
Σημείωση: Εάν έχεις το flash cs3,πηγαίνεις στο linckage,αν έχεις το cs4 το linckage έχει μπεί μέσα στο properties,οποτε δεν υπαρχει μενού linckage,πατάς properties και έχει εκει μέσα το linckage..
Εικόνα
Code is poetry

Άβαταρ μέλους
paink1ller
Δημοσιεύσεις: 865
Εγγραφή: 21 Ιαν 2008 19:51

Access MovieClip mesa apo mia class?

Δημοσίευση από paink1ller » 31 Ιαν 2010 19:47

Thanks Maradonna αλλα αυτο ειναι για να το καλεις μεσα απο την δικια του class. Το ειχα δοκιμασει και ετσι αλλα παλι δεν δουλευει.

Απ'οτι ψιλιαζομαι δεν μπορει να το δει σαν property του root μεσα απο αλλη class. Μαλλον θελει να κανω μια document class και να το δηλωσω σαν static εκει πρωτα.
Ηobby: Shooting photons

Άβαταρ μέλους
Maradonna
Δημοσιεύσεις: 135
Εγγραφή: 07 Ιουν 2007 03:19
Τοποθεσία: Αθήνα
Επικοινωνία:

Access MovieClip mesa apo mia class?

Δημοσίευση από Maradonna » 31 Ιαν 2010 20:26

Πιθανοτατα..δυστυχως (για τη περιπτωση αυτη) εγω φτιάχνω κλάσεις και υπο-κλάσεις για όλα τα αντικείμενα και τα καλώ δυναμικά.Δεν μου ετυχε κατι αντιστοιχο.
Αν μπορεις ομως (για την ιστορια κ μονο) εξηγησε μου τη προταση σου " δεν μπορει να το δει σαν property του root μεσα απο αλλη class"..
Εικόνα
Code is poetry

Άβαταρ μέλους
paink1ller
Δημοσιεύσεις: 865
Εγγραφή: 21 Ιαν 2008 19:51

Access MovieClip mesa apo mia class?

Δημοσίευση από paink1ller » 01 Φεβ 2010 01:46

Ιεραρχικα στο AS3 εχεις Stage->root->και μετα τα υπολοιπα γραφικα σου.

Δηλαδη οταν κανω this.parent, απο την Class που εχω ορισει στο button, μου δινει root1 που ειναι instance name του [display object container] root. Mεσα στο root βρισκεται το star_mc. Αρα εφοσων το root ειναι ενα [MovieClip object] με instance name root1 θα επρεπε να δεχεται κατι του στυλ this.parent.star_mc αφου το this.parent της Class ειναι ενα MovieClip(aka root) που περιεχει ενα αλλο ΜοvieClip με ονομα star_mc.

Oταν χρησιμοποιεις [object].kati αναφερεσαι σε μια property της κλασης. Eιτε αυτη ειναι μια απλη μεταβλητη ειτε καποιο [object].

Ειναι λιγο μπερδεμα η κατασταση και το ευκολοτερο απ'οτι καταλαβα ειναι να το κανω με this.parent.getChildByName('star_mc').x +=10 .

EDIT: Aν τα κανεις ολα dynamic παντως τα βλεπει μια χαρα. Οταν προυπαρχει καποιο γραφικο στο timeline τοτε εχει προβλημα.
Ηobby: Shooting photons

nkast
Δημοσιεύσεις: 137
Εγγραφή: 15 Νοέμ 2009 20:31
Επικοινωνία:

Access MovieClip mesa apo mia class?

Δημοσίευση από nkast » 01 Φεβ 2010 13:42

Για να είσαι σωστός πρέπει -όπως είπες και εσύ- να κάνεις μια document class, να δηλώσεις τα instances και να ελέγχεις από εκεί τη συμπεριφορά τους.

Αν θέλεις να δουλέψεις χύμα όπως στη AS2 πήγαινε File/Publish Setting/TAB:Flash/Script:Settings και ξε-τικαρε το Strict Mode. Χάνεις όμως ένα πολύτιμο βοήθημα στο να πιάνεις λάθη κατά το compile-time.

Άβαταρ μέλους
paink1ller
Δημοσιεύσεις: 865
Εγγραφή: 21 Ιαν 2008 19:51

Access MovieClip mesa apo mia class?

Δημοσίευση από paink1ller » 01 Φεβ 2010 17:45

nice!
thanks δεν το ηξερα αυτο με το strict mode.

Δουλευει τελικα αν τα δηλωσεις στην document class οπως ηταν αναμενωμενο.
Ηobby: Shooting photons

Άβαταρ μέλους
Maradonna
Δημοσιεύσεις: 135
Εγγραφή: 07 Ιουν 2007 03:19
Τοποθεσία: Αθήνα
Επικοινωνία:

Access MovieClip mesa apo mia class?

Δημοσίευση από Maradonna » 02 Φεβ 2010 01:00

Τελεια..μαθαμε και κατι ;) και εγω δεν το ειχα δει το Strict Mode..την επομενη φορα που θα χρειαστω κατι αναλογο θα το ξε-τσεκαρω σιγουρα..
Εικόνα
Code is poetry

Απάντηση

Επιστροφή στο “Flash γενικά”

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

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