Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    preloader ed errore TypeError: Error #2007

    Ecco il mio problema...

    Sullo stage ho due pulsanti(di nome btnAlpha e btnBeta) ed un movieclip(di nome MovieClip)al cui interno voglio caricare due diversi file swf.Questo lo faccio attraverso le due funzioni caricamentoAlpha e caricamentoBeta che chiamano attraverso il comando addChild i due swf che sono posizionati ai fotogrammi 2 e 3 del movieclip.Ovviamente se premo sui due pulsanti i due file swf si sovrappongono.Il mio intento è quello di far chiudere un swf alla pressione dell'altro pulsante.Ad un certo punto ho inserito il comando "movieClip.removeChild(movieClip.loaderBeta);" per rimuovere i file swf aggiunti prima.il sitema funziona(nel senso che al momento della compilazione del file nn risultano errori e il file si naviga correttamente) ma all'interno di Flash nell'Output mi esce un errore quando premo la prima volta un pulsante(dato che nn trovava nulla da rimuovere) o se premo ripetutamente lo stesso pulsante.
    L'errore è il seguente:


    "TypeError: Error #2007: Il valore del parametro child deve essere diverso da null.
    at flash.display:isplayObjectContainer/removeChild()
    at index/webFunction()"


    Dopo ho inserito quest'altro comando


    "if(contains(movieClip.loaderBeta)){
    movieClip.removeChild(movieClip.loaderBeta);
    }"


    la cosa che nn capisco a questo punto è perchè adesso l'errore me lo da solo la prima volta che premo uno dei due pulsanti e dopo funziona correttamente(rimuove l'swf se necessario e nn fa nulla se l'swf è già stato rimosso).


    Codice:


    btnAlpha.addEventListener(MouseEvent.CLICK, caricamentoAlpha);
    function caricamentoAlpha(event:MouseEvent):void {
    movieClip.gotoAndStop(2);


    if(contains(movieClip.loaderBeta)){
    movieClip.removeChild(movieClip.loaderBeta);
    }
    }
    btnBeta.addEventListener(MouseEvent.CLICK, caricamentoBeta);
    function caricamentoBeta(event:MouseEvent):void {
    movieClip.gotoAndStop(3);


    if(contains(movieClip.loaderAlpha)){
    movieClip.removeChild(movieClip.loaderAlpha);
    }
    }


    Ripeto che all'atto pratico il file funziona perfettamente ma vorrei capire perchè mi da quell'errore.
    Devo semplicemente ignorarlo?non mi va molto a genio come cosa.

    grazie mille per la disponibilità

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    intanto ti consiglio di stringare il codice usando uno switch ed una sola funzione, poi prova con questo codice:

    Codice PHP:
    btnAlpha.addEventListener (MouseEvent.CLICKcaricamento);
    btnBeta.addEventListener (MouseEvent.CLICKcaricamento);
    function 
    caricamento (event:MouseEvent):void {
        switch(
    event.target) {
            case 
    btnAlpha:
                
    movieClip.gotoAndStop (2);
                if(
    movieClip.contains(movieClip.loaderBeta)) {
                    
    movieClip.removeChild (movieClip.loaderBeta);
                }
                break;
            case 
    btnBeta:
                
    movieClip.gotoAndStop (3);
                if(
    movieClip.contains(movieClip.loaderAlpha)) {
                    
    movieClip.removeChild (movieClip.loaderAlpha);
                }
                break;
        }


  3. #3
    Grazie mille per il codice che è molto più pulito del mio.Ne farò tesoro per il futuro.Devo però dirti che ha lo stesso identico comportmamento di prima.La prima volta che premo uno dei due pulsanti da nuovamente questo errore

    TypeError: Error #2007: Il valore del parametro child deve essere diverso da null.
    at flash.display:isplayObjectContainer/contains()
    at index/worksFunction()

    invece dopo che ha aggiunto uno dei child lo rimuove correttamente e tutto funziona senza altri intoppi.


    Grazie ancora per il tempo che mi hai dedicato.Buon fine settimana

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    immaginavo
    mi stona questo: movieClip.contains(movieClip.loaderBeta)
    quello che c'è tra parentesi, che usavi anche tu
    ho verificato quali valori fosse possibile passare alla funzione e sono solo DisplayObject, perciò ho pensato di provare con [b]movieClip.contains(movieClip["loaderBeta"])[b]

    altrimenti potresti fare anche:

    Codice PHP:
    btnAlpha.addEventListener (MouseEvent.CLICKcaricamento);
    btnBeta.addEventListener (MouseEvent.CLICKcaricamento);
    function 
    caricamento (event:MouseEvent):void {
        switch(
    event.target) {
            case 
    btnAlpha:
                
    movieClip.gotoAndStop (2);
                if(
    movieClip.getChildByName("loaderBeta") != null) {
                    
    movieClip.removeChild (movieClip.loaderBeta);
                }
                break;
            case 
    btnBeta:
                
    movieClip.gotoAndStop (3);
                if(
    movieClip.getChildByName("loaderAlpha") != null) {
                    
    movieClip.removeChild (movieClip.loaderAlpha);
                }
                break;
        }


  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da secteur150
    invece dopo che ha aggiunto uno dei child lo rimuove correttamente e tutto funziona senza altri intoppi.
    ah, su questa affermazione, vorrei capire una cosa, dove crei loaderAlpha e loaderBeta?

    perchè se li crei su root allora dovrebbe andare alla grande anche questo:

    Codice PHP:
    btnAlpha.addEventListener (MouseEvent.CLICKcaricamento);
    btnBeta.addEventListener (MouseEvent.CLICKcaricamento);
    function 
    caricamento (event:MouseEvent):void {
        switch(
    event.target) {
            case 
    btnAlpha:
                
    movieClip.gotoAndStop (2);
                if(
    movieClip.contains(loaderBeta)) {
                    
    movieClip.removeChild (loaderBeta);
                }
                break;
            case 
    btnBeta:
                
    movieClip.gotoAndStop (3);
                if(
    movieClip.contains(loaderAlpha)) {
                    
    movieClip.removeChild (loaderAlpha);
                }
                break;
        }


  6. #6
    Vengono creati all'interno del movieClip mentre i pulsanti che li richiamano si trovano sullo stage principale.
    Mi consigli di trovare il sistema per caricarli sullo stage?

    Proverò così.

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da secteur150
    Vengono creati all'interno del movieClip mentre i pulsanti che li richiamano si trovano sullo stage principale.
    Mi consigli di trovare il sistema per caricarli sullo stage?

    Proverò così.
    non di caricarli, ma di crearli
    cioè il codice che ora metti su movieClip lo metti invece nella timeline principale

  8. #8
    Si ora funziona perfettamente ed è anche più semplice da gestire.

    grazie ancora.
    Alla prossima

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 © 2024 vBulletin Solutions, Inc. All rights reserved.