|
|
| Autore |
Messaggio |
theboss
principiante


Registrato: 03/06/06 10:00
Messaggi: 70
|
Oggetto: problema con removeChild [as3.0]
Inviato: 15.03.10 | 15:09 |
|
|
Ciao a tutti, sono nuovo del mondo as3.0 e mi sto avventurando in una prova per apprenderlo bene,
Illustro brevemente il problema:
Ho una movieclip che quando il mouse li va sopra esce da dietro un cartellino, e quando il mouse esce il cartellino torna indietro e scompare. il problema sta propio nel farlo scomparire!
la classe della movie clip si chiama Stuatua mentre l'altra movie clip che esce Menu.
con l'evento mouseover avviene l'adchild di Menu (this.addChildAt(menu, 0) per farla stare dietro e quindi non visibile) e parte la public function di Menu che fa il tween del cartellino per portalo fuori dalla Statua.
Quando il mouse esce parte l'altra public function di Menu che fa il tween all'incontrario
Per rimuovere dallo stage Menu ho provato in questo modo: quando la tween è completata faccio partire attraverso la classe Menu una public function di Statua che rimuove l'istanza della classe: this.removeChildAt(0); ma non fa nulla il cartello rimane e non genera errori!
spero di essermi spiegato bene  |
|
| Torna in cima |
|
|
Sponsor
|
|
 |
theboss
principiante


Registrato: 03/06/06 10:00
Messaggi: 70
|
Oggetto:
Inviato: 15.03.10 | 15:17 |
|
|
| mi sto avvicinando al problema, facendo un trace di menu(istaza Menu) all'interno della funzione con il removeChild mi dice Null, non capisco il perchè |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 15.03.10 | 15:55 |
|
|
Ciao the_boss,
insomma... non si capisce nenissimo cosa tu faccia...
STATUA » addChild
STATUA » removeChild
? ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
theboss
principiante


Registrato: 03/06/06 10:00
Messaggi: 70
|
Oggetto:
Inviato: 15.03.10 | 16:29 |
|
|
| Coach ha scritto: | Ciao the_boss,
insomma... non si capisce nenissimo cosa tu faccia...
STATUA » addChild
STATUA » removeChild
? |
l'addchild della statua viene fatta nel main, ma li tutto bene!
i problemi sorgono riumuovendo il menu all'interno della classe statua. Io chiamo una funzione di Statua da Menu che fa rimuovere l'addchild di menu, ma da questa funzione non si raggiunge menu, facedo un trace(menu) me lo vede come null. Forse ci vuole una tecnica diversa per richiamare quella funzione |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 15.03.10 | 16:34 |
|
|
Cerca di spiegarti un pelino meglio.
l'addChild di menu dove lo fai? DA statua IN statua?
ed il removeChild? lo stesso?
Prova magari a postare 2 righe di codice, con qualche spiegazione :) ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
theboss
principiante


Registrato: 03/06/06 10:00
Messaggi: 70
|
Oggetto:
Inviato: 15.03.10 | 18:34 |
|
|
| Coach ha scritto: | Cerca di spiegarti un pelino meglio.
l'addChild di menu dove lo fai? DA statua IN statua?
ed il removeChild? lo stesso?
Prova magari a postare 2 righe di codice, con qualche spiegazione :) |
l'addChild di menu viene all'interno di statua, e anche la funzione che efettua il remove è all'interno di statua ma viene chiamata all'interno di menu a tween finita
| Codice: | /////////// interno di Statua dove avviene l'addchild
private function showWord(me:MouseEvent):void{ // quando il mouse entra
this.addChildAt(menu, 0);
menu.showMc();
}
private function hideWord(me:MouseEvent):void{ //quando il mouse esce
menu.hideMc();
}
//questa è la funzione che dovrebbe togliere l'istanza di menu, chiamata sucessivamente [u]DA MENU[/u]
public function remove():void{
trace(this.menu); //<- questo mi dice null O.o
this.removeChildAt(0);
} |
| Codice: | /////////// interno di Menu
public function hideMc():void{
mover = new Tween(this,"rotation",Strong.easeOut,140,-45,1,true);
mover.addEventListener(TweenEvent.MOTION_FINISH,remove);
}
private function remove(te:TweenEvent):void{
removeEventListener(TweenEvent.MOTION_FINISH,remove);
statua = new Statua();
statua.remove();
} |
|
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 15.03.10 | 19:29 |
|
|
Non ho capito perchè nel remove crei una nuova istanza di Statua... che sia quello l'errore?  ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
theboss
principiante


Registrato: 03/06/06 10:00
Messaggi: 70
|
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto:
Inviato: 16.03.10 | 13:13 |
|
|
hehehe, non ci siamo
Così facendo crei una nuova istanza dell'oggetto Statua.
E questo nuovo oggetto Statua, che non è quello in cui hai addato il Menu non avrà appunto l'oggetto Menu (spiegato il null).
Per operare sull'Oggetto Statua da Menu, devi utilizzare un riferimento, oppure dispatchare un evento da Menu e gestire un Listener su Statua. ____________________________________________________________
Il Forum è uno strumento di condivisione, oltre a fare DOMANDE, si possono anche dare RISPOSTE! |
|
| Torna in cima |
|
|
theboss
principiante


Registrato: 03/06/06 10:00
Messaggi: 70
|
Oggetto:
Inviato: 16.03.10 | 16:13 |
|
|
mal di testa:-?
ma credo di aver capitlo ameno dove sta l'errore, ora non mi resta altro che vedere come si dipatcciano gli eventi. Grazie mille dell'aiuto coach  |
|
| Torna in cima |
|
|
Coach
amministratore


Età: -1981
Registrato: 31/01/03 13:50
Messaggi: 4549
Località: Verona
|
Oggetto: AS 3.0: dispatchEvent
Inviato: 16.03.10 | 16:24 |
|
|
E' semplice, ti basterà:
1) aggiungere una proprietà nell'oggetto che invierà l'evento (Menu):
| Codice: | public static const REMOVE_MENU:String = 'RemoveMenu'; |
2) dispatchare l'evento (Menu):
| Codice: | dispatchEvent(new Event(REMOVE_MENU)); |
3) aggiungere un listener in ascolto (Statua)
| Codice: | istanza_menu.addEventListener(MenuObject.REMOVE_MENU, remove); |
Se ho capito bene come sono strutturati i 2 oggettini
Ma visto che stai scrivendo solo metodi public, puoi sempicemente passare un riferimento di Statua a Menu, oppure usare il parent.
Ultima modifica di Coach il 22.07.10 | 12:02, modificato 2 volte in totale |
|
| Torna in cima |
|
|
theboss
principiante


Registrato: 03/06/06 10:00
Messaggi: 70
|
Oggetto: Re: AS 3.0: dispatEvent
Inviato: 16.03.10 | 18:20 |
|
|
| Coach ha scritto: | E' semplice, ti basterà:
1) aggiungere una proprietà nell'oggetto che invierà l'evento (Menu):
| Codice: | public static const REMOVE_MENU:String = 'RemoveMenu'; |
2) dispatchare l'evento (Menu):
| Codice: | dispatchEvent(new Event(REMOVE_MENU)); |
3) aggiungere un listener in ascolto (Statua)
| Codice: | istanza_menu.addEventListener(MenuObject.REMOVE_MENU, remove); |
Se ho capito bene come sono strutturati i 2 oggettini
Ma visto che stai scrivendo solo metodi public, puoi sempicemente passare un riferimento di Statua a Menu, oppure usare il parent. |
Sei un tesoro
funziona che è uno spettacolo!
ho solo dovuto arrangiare il codice cosi:
menu.addEventListener(Menu.REMOVE_MENU, remove);
Grazie mille ancora |
|
| Torna in cima |
|
|
caramelleamare
nuovo utente

Registrato: 27/05/11 09:14
Messaggi: 4
|
Oggetto:
Inviato: 27.05.11 | 09:37 |
|
|
ciao, premetto che non ci capisco niente di codice eprogrammazione perche ho appena iniziato e conosco appena due righe.
fra le cose che mi hanno insegnato c'è appunto il caso di rollover e out di un MC.
non capisco perche in questo caso è complivcato fare quello che vuoi fare: cioè, con actionscript per non potevi usare questo codice per fare quello che vuoi?
var keyvar_menu1:Number = 0
clipmio.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler1);
function buttonOverHandler1(MouseEvent) : void {
keyvar_menu1 = 1;
}
clipmio.addEventListener(MouseEvent.MOUSE_OUT, buttonOutHandler1);
function buttonOutHandler1(MouseEvent) : void {
keyvar_menu1 = 0;
}
clipmio.addEventListener(Event.ENTER_FRAME, MC_EF1);
function MC_EF1(MouseEvent) : void {
if (keyvar_menu1 == 1) {
clipmio.nextFrame();
}
else if (keyvar_menu1 == 0) {
clipmio.prevFrame();
}
}
ciao! |
|
| Torna in cima |
|
|
|