Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 28 su 28
  1. #21
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Ok, allora direi che spegnendo l'enterFrame dovresti essere apposto

    Codice PHP:
    oggetto_che_lo_richiama.removeEventListener(Event.ENTER_FRAMEfunzione_richiamata); 

  2. #22
    Ho individuato dove ho il problema ma non riesco a rimuovere l'enterFRAME.
    Ho il file A.swf che carica B.swf (dove ho la gallery Illusion) quando carico B.swf, lascio visibile un pulsante che fa parte di A.swf per tornare indietro.
    Nel codice di B.swf l'evento enterFRAME richiama la funzione che mi crea l'effetto di scorrimento della gallery:
    codice:
            public function addItemsMovement():void
            {
                items_holder_mc.addEventListener(Event.ENTER_FRAME,moveItemsHolder);
            }
            
            private function moveItemsHolder(evt:Event):void
            {
                var centerX:Number=stage.stageWidth/2;
                var speed:Number=(centerX-mouseX)/20;
                evt.target.x+=speed;
                
                if(evt.target.x>=mask_mc.x)
                    evt.target.x=mask_mc.x;
                if(evt.target.x<=-100*objs_array.length-10*(objs_array.length-1)+mask_mc.x+mask_mc.width)
                    evt.target.x=-100*objs_array.length-10*(objs_array.length-1)+mask_mc.x+mask_mc.width;
            }
    Quando clicco sul pulsante 'indice'(che come ho detto si trova su A.swf) richiamo questa funzione:
    codice:
    indice_mc.addEventListener(MouseEvent.MOUSE_UP,menu);
    
            private function menu(m:MouseEvent):void
            {
                    loader.unload();
                    removeChild(loader);                
                    indice_mc.visible=false;
            }
    In questo caso succede che mi viene dato questo errore:

    TypeError: Error #1009: Impossibile accedere a una proprietà o a un metodo di un riferimento oggetto null.
    at org.FlepStudio.Illusion::Main/moveItemsHolder()

    Ma come si rimuove questo dannato evento???

  3. #23
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    E' complicato, perchè hai due document class che non connetti in alcun modo.
    Io farei in questo modo, nella document class di B.swf inserirei una funzione per la rimozione di quel particolare evento:
    Codice PHP:
    public function removeEnterFrame () {
        
    items_holder_mc.removeEventListener(Event.ENTER_FRAME,moveItemsHolder);

    In quel modo non ti dovrebbe essere difficile richiamare quella funzione dentro al codice per l'unload:
    Codice PHP:
    indice_mc.addEventListener(MouseEvent.MOUSE_UP,menu);
    private function 
    menu(m:MouseEvent):void {
        
    loader.content.removeEnterFrame();
        
    loader.unload();
        
    removeChild(loader);                
        
    indice_mc.visible=false;


  4. #24
    Quello che servirebbe a me è poter rimuovere l'evento da A.swf, in quanto gli eventi del mouse vengono scatenati in questo swf e non in B.swf. Infatti indice_mc si trova in A.swf. Se indice_mc si trovasse nella DC di B.swf, potrebbe rimuovere se stesso?? ossia una pagina potrebbe rimuovere se stessa?

  5. #25
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Beh allora lo togli direttamente da A.swf, gestire gli eventi nella stessa DC non è un problema, perchè puoi risalire più facilmente agli oggetti che contiene.
    Se vuoi disabilitare il click da indice_mc una volta che è caricato, basta che fai

    Codice PHP:
    indice_mc.addEventListener(MouseEvent.MOUSE_UP,menu);

            private function 
    menu(m:MouseEvent):void
            
    {
    indice_mc.removeEventListener(MouseEvent.MOUSE_UP,menu);
                    
    loader.unload();
                    
    removeChild(loader);                
                    
    indice_mc.visible=false;
            } 
    Comunque sono andato in confusione, perchè parlavamo dell'enterFrame e ora invece parliamo di un'azione su un pulsante, mi son perso.

  6. #26
    No no, stiamo parlando sempre di ENTER_FRAME che dovrei rimuovere quando faccio clic su indice_mc.
    ENTER_FRAME si trova in B.swf mentre indice_mc sta in A.swf ma lo rendo visibile anche in B.swf, però il suo codice sta nella DC di A.swf. Ed è proprio A.swf che deve contenere il codice che rimuove ENTER_FRAME dal suo MC figlio. (facciamo un pò di ordine)
    Io sto cercando la soluzione anche da altri forum e risorse in giro per la rete. Se la trovo la mostro in questo post in modo che anche altri possano trarne spunto(ho trovato molti post con lo stesso tipo di problema, comunque sono problemi legati alla gestione dei listeners).

  7. #27
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Ma è quello che ti ho scritto esattamente due post da questo. Per gestirlo devi aggiungere una funzione che rimuova il listener direttamente su B.swf, e te l'ho scritta, e poi devi richiamare la funzione dal pulsante in cui fai anche l'unload, e ti ho scritto anche questo.

  8. #28
    La tua soluzione due post fa l'ho provata ma da A.swf non mi fa accedere alla funzione che rimuove l'enter_frame.
    Comunque ho risolto in quest'altra maniera:
    ho aggiunto il codice soltanto da B.swf dove ho inserito i listeners direttamente
    codice:
    this['parent']['parent']['root'].indice_mc.addEventListener(MouseEvent.MOUSE_UP,addItemsMovement);
    
    public function addItemsMovement2(e:Event):void
    {			items_holder_mc.removeEventListener(Event.ENTER_FRAME,moveItemsHolder);			
    }
    Non avevo mai provato a richiamare il listeners riferendomi ad indice_mc da B.swf indicando il percorso this['parent']['parent']['root'].
    Comunque ora funziona e l'evento mi viene arrestato.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.