Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Eccezione removechild

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    4

    Eccezione removechild

    ragazzi (anche ragazze ovviamente).. io sto impazzendo.. sto imparando ad usare actionscript per un progettino che devo consegnare entro il 7, ma non riesco a risolvere quest'errore:

    provate ad aprire il codice allegato e ad eseguire il .swf
    se si ingrandisce una foto e si preme poi successiva, viene generata un'eccezione quando provo a fare la removechild. Nonstante questo, se eseguo il codice da adobe flash (non il viewer) tutto funziona correttamente.

    Allora ho pensato: io faccio una catch sull'eccezione, così non mi visualizza l'errore, e sono a posto. Ma no! Se faccio la catch poi non funziona più il programma o.O e idem con la contains!
    Nel senso che se lo avvio, ingrandisco un'immagine, e poi passo alla successiva, la griglia di immagini sottostanti non si disattiva, e se qualcuno ci clicca sopra, esce un bel casino..

    Inoltre se apro l'swf in un browser anzichè nel flash viewer, l'ingrandimento non viene centrato..

    cosa devo fare c.ç

    incollo il link al codice visto che uno zip che supera la soglia per l'upload
    http://dl.dropbox.com/u/3591055/Archivio.zip

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non posso aprire il tuo archivio, sarebbe meglio se il codice non fosse particolarmente intricato, che postassi per lo meno la parte incriminata del removeChild.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    4
    temo sia necesario postarlo tutto...
    se con trova cerchi full_mc.removeChild(my_loader) trovi dov'è il problema

    Codice PHP:
    package {
        
    import fl.transitions.Tween;
        
    import fl.transitions.easing.*;
        
    import fl.transitions.TweenEvent;
        
    import flash.events.*;
        
    import flash.net.*;
        
    import flash.xml.*;
        
    import flash.display.MovieClip;
        
    import flash.display.Loader;
        
    import Prec;
        
    import Suc;
        
    import fl.transitions.Tween;
        
    import fl.transitions.easing.*;
        
    import fl.transitions.TweenEvent;

        public class 
    Main extends MovieClip {
            
    //numero di colonne
            
    var columns:Number;
            var 
    my_x:Number;
            var 
    my_y:Number;
            
    //array temporaneo di anteprime
            
    var thumbs:Array=new Array ();
            var 
    my_thumb_width:Number;
            var 
    my_thumb_height:Number;
            var 
    my_images:XMLList;
            
    //numero totale di immagini
            
    var my_total:Number;
            
    //indice immagine corrente visualizzata
            
    var img_count:Number;
            var 
    container_mc:MovieClip;
            var 
    preloaders_mc:MovieClip;
            var 
    full_mc:MovieClip;
            var 
    prec:Prec;
            var 
    suc:Suc;
            var 
    x_counter:Number=0;
            var 
    y_counter:Number=0;
            var 
    temp_my_loader:Loader;
            var 
    my_tweens:Array=[];
            var 
    container_mc_tween:Tween;
            var 
    full_tween:Tween;
            var 
    error:Error;
            var 
    myXMLLoader:URLLoader = new URLLoader();




            public function 
    Main() {
                
    prec= new Prec();
                
    suc= new Suc();
                
    myXMLLoader.load(new URLRequest("gallery.xml"));
                
    myXMLLoader.addEventListener(Event.COMPLETEprocessXML);
            }




            function 
    processXML(e:Event):void {
                var 
    myXML:XML=new XML(e.target.data);
                
    columns=myXML.@COLUMNS;
                
    my_x=myXML.@XPOSITION;
                
    my_y=myXML.@YPOSITION;
                
    my_thumb_width=myXML.@WIDTH;
                
    my_thumb_height=myXML.@HEIGHT;
                
    my_images=myXML.IMAGE;
                
    my_total=my_images.length();
                
    createContainer();
                
    callThumbs();
                
    myXMLLoader.removeEventListener(Event.COMPLETEprocessXML);
                
    myXMLLoader=null;
            }



            
    //prepara il container e il movieclip per le anteprime
            
    function createContainer():void {
                
    container_mc = new MovieClip();
                
    container_mc.x=my_x;
                
    container_mc.y=my_y;
                
    addChild(container_mc);
                
    container_mc.addEventListener(MouseEvent.CLICKcallFull);
                
    container_mc.addEventListener(MouseEvent.MOUSE_OVERonOver);
                
    container_mc.addEventListener(MouseEvent.MOUSE_OUTonOut);
                
    container_mc.buttonMode=true;
                
    preloaders_mc = new MovieClip();
                
    preloaders_mc.x=container_mc.x;
                
    preloaders_mc.y=container_mc.y;
                
    addChild(preloaders_mc);
            }




            
    //carica le anteprime nel for, e una volta che ogni anteprima è stata caricata
            //lancia l'evento che chiama thumbLoaded che si occupa di visualizzarle
            
    function callThumbs():void {
                for (var 
    i:Number 0my_totali++) {
                    
                    var 
    thumb_url=my_images[i].@THUMB;
                    var 
    thumb_loader = new Loader();
                    
    thumb_loader.load(new URLRequest(thumb_url));
                    
    thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETEthumbLoaded);
                    
    thumb_loader.name=i;
                    
    //dispone i thumbnail con un padding di 10px
                    
    thumb_loader.= (my_thumb_width+10)*x_counter;
                    
    thumb_loader.= (my_thumb_height+10)*y_counter;
                    
    thumbs.push(thumb_loader);
                    if (
    x_counter+1<columns) {
                        
    x_counter++;
                    } else {
                        
    x_counter=0;
                        
    y_counter++;
                    }
                }
            }



            
    //visualizza le thumbs con un effetto dissolvenza
            
    function thumbLoaded(e:Event):void {
                for (var 
    i:Number <= 1000000i++) {}
                var 
    my_thumb:Loader=Loader(e.target.loader);
                
    container_mc.addChild(my_thumb);
                
    my_tweens[Number(my_thumb.name)]=new Tween(my_thumb,"alpha",Strong.easeIn,0,1,0.5,true);
                
    my_thumb.contentLoaderInfo.removeEventListener(Event.COMPLETEthumbLoaded);
            }



            
    //si occupa di caricare l'immagine ad alta risoluzione
            //solo nel momento in cui un'anteprima viene cliccata, in modo da risparmiare risorse
            
    function callFull(e:MouseEvent):void {
                var 
    full_loader:Loader = new Loader();
                var 
    full_url=my_images[e.target.name].@FULL;
                
    img_count=e.target.name;
                
    trace("image_count " img_count);
                
    full_loader.load(new URLRequest(full_url));
                
    full_loader.contentLoaderInfo.addEventListener(Event.INITfullLoaded);
                
    //rimuovo gli eventi sulla galleria in background
                
    container_mc.removeEventListener(MouseEvent.CLICKcallFull);
                
    container_mc.buttonMode=false;
                
    container_mc.removeEventListener(MouseEvent.MOUSE_OVERonOver);
                
    container_mc.removeEventListener(MouseEvent.MOUSE_OUTonOut);
                
    container_mc_tween=new Tween(container_mc,"alpha",Strong.easeIn,1,0.5,0.5,true);
                
    trace("image_count " img_count);
                
    //visualizzo i pulsanti precedente e successiva, tenendo conto della 
                //diapositiva in cui ci trova (differenza prima ed ultima)
                
    if (e.target.name==0) {
                    
    addChild(suc);
                }
                if (
    e.target.name==my_total-1) {
                    
    addChild(prec);
                }
                if (
    e.target.name!=0&&e.target.name!=my_total-1) {
                    
    addChild(prec);
                    
    addChild(suc);
                }
                
    prec.buttonMode=true;
                
    suc.buttonMode=true;
                
    prec.x=50;
                
    prec.y=590;
                
    suc.x=550;
                
    suc.y=590;
                
    prec.addEventListener(MouseEvent.CLICKcallPrec);
                
    suc.addEventListener(MouseEvent.CLICKcallSuc);
            }



            
    //completato il caricamento dell'immagine ad alta risoluzione
            //fullLoaded la visualizza ed aggiunge gli eventi per poterla rimuovere
            
    function fullLoaded(e:Event):void {
                
    full_mc = new MovieClip();
                
    full_mc.buttonMode=true;
                
    addChild(full_mc);
                var 
    my_loader:Loader=Loader(e.target.loader);
                
    temp_my_loader=my_loader;
                
    full_mc.addChild(my_loader);
                
    full_tween=new Tween(my_loader,"alpha",Strong.easeIn,0,1,0.5,true);
                
    my_loader.= (stage.stageWidth my_loader.width)/2;
                
    my_loader.= (stage.stageHeight my_loader.height)/2;
                
    my_loader.addEventListener(MouseEvent.CLICK,removeFull);
                
    my_loader.contentLoaderInfo.removeEventListener(Event.COMPLETEfullLoaded);
            }



            
    //Aggiunge il tween per la scoparsa dell'immagine
            
    function removeFull(e:MouseEvent):void {
                var 
    my_loader:Loader=Loader(e.currentTarget);
                
    full_tween=new Tween(my_loader,"alpha",Strong.easeOut,1,0,0.5,true);
                
    full_tween.addEventListener(TweenEvent.MOTION_FINISHtweenFinished);
                
    container_mc_tween=new Tween(container_mc,"alpha",Strong.easeOut,0.5,1,0.5,true);
                
    trace("image_count " img_count);
                if (
    img_count==0) {
                    
    removeChild(suc);
                }
                if (
    img_count==my_total-1) {
                    
    removeChild(prec);
                }
                if (
    img_count!=0&&img_count!=my_total-1) {
                    
    removeChild(prec);
                    
    removeChild(suc);
                }
            }



            
    //rimuove l'immagine ad alta risoluzione e ripristina lo stato della galleria
            
    function tweenFinished(e:TweenEvent):void {
                var 
    my_loader:Loader=Loader(e.target.obj);
                
    my_loader.unload();
                
    //try {

                
    full_mc.removeChild(my_loader);// This line was removeChid(my_loader), just add full_mc before it.

                
    removeChild(full_mc);

                
    //} catch (error:Error) {}
                
    full_mc=null;
                
    container_mc.addEventListener(MouseEvent.CLICKcallFull);
                
    container_mc.buttonMode=true;
                
    container_mc.addEventListener(MouseEvent.MOUSE_OVERonOver);
                
    container_mc.addEventListener(MouseEvent.MOUSE_OUTonOut);
                var 
    my_tween:Tween=Tween(e.target);
                
    my_tween.removeEventListener(TweenEvent.MOTION_FINISHtweenFinished);

            }



            
    //Enfasi sulle thumbnails
            
    function onOver(e:MouseEvent):void {
                var 
    my_thumb:Loader=Loader(e.target);
                
    my_thumb.alpha=0.5;
            }
            function 
    onOut(e:MouseEvent):void {
                var 
    my_thumb:Loader=Loader(e.target);
                
    my_thumb.alpha=1;
            }


            
    //passa all'immagine successiva
            
    function callSuc(e:MouseEvent):void {


                
    trace("image_count " img_count);
                
    //rimuove quella ad alta risoluzione simulando un evento
                
    temp_my_loader.dispatchEvent(new MouseEvent(MouseEvent.CLICKtruefalse));
                
    img_count=img_count+1;
                
    //carica l'immagine successiva
                
    var full_loader:Loader = new Loader();
                var 
    full_url=my_images[img_count].@FULL;
                
    trace("image_count " img_count);
                
    full_loader.load(new URLRequest(full_url));
                
    full_loader.contentLoaderInfo.addEventListener(Event.INITfullLoadedButton);
                
    container_mc.removeEventListener(MouseEvent.CLICKcallFull);
                
    container_mc.buttonMode=false;
                
    container_mc.removeEventListener(MouseEvent.MOUSE_OVERonOver);
                
    container_mc.removeEventListener(MouseEvent.MOUSE_OUTonOut);
                
    container_mc_tween=new Tween(container_mc,"alpha",Strong.easeIn,1,0.5,0.5,true);
                
    trace("image_count " img_count);
            }




            
    //idem a callSuc ma carica la precedente
            
    function callPrec(e:MouseEvent):void {

                
    container_mc.removeEventListener(MouseEvent.CLICKcallFull);
                
    container_mc.buttonMode=false;
                
    container_mc.removeEventListener(MouseEvent.MOUSE_OVERonOver);
                
    container_mc.removeEventListener(MouseEvent.MOUSE_OUTonOut);

                
    temp_my_loader.dispatchEvent(new MouseEvent(MouseEvent.CLICKtruefalse));
                
    img_count=img_count-1;
                var 
    full_loader:Loader = new Loader();
                var 
    full_url=my_images[img_count].@FULL;
                
    trace("image_count " img_count);
                
    full_loader.load(new URLRequest(full_url));
                
    full_loader.contentLoaderInfo.addEventListener(Event.INITfullLoadedButton);
                
    container_mc.removeEventListener(MouseEvent.CLICKcallFull);
                
    container_mc.buttonMode=false;
                
    container_mc.removeEventListener(MouseEvent.MOUSE_OVERonOver);
                
    container_mc.removeEventListener(MouseEvent.MOUSE_OUTonOut);
                
    container_mc_tween=new Tween(container_mc,"alpha",Strong.easeIn,1,0.5,0.5,true);
                
    trace("image_count " img_count);
            }



            
    //variante di fullLoaded per visualizzare l'immagine ad alta risoluzione
            //viene utilizzato dalle funzioni degli eventi dei pulsanti precedente e successiva
            
    function fullLoadedButton(e:Event):void {
                
    full_mc = new MovieClip();
                
    full_mc.buttonMode=true;
                
    addChild(full_mc);
                var 
    my_loader:Loader=Loader(e.target.loader);
                
    temp_my_loader=my_loader;
                
    full_mc.addChild(my_loader);
                
    full_tween=new Tween(my_loader,"alpha",Strong.easeIn,0,1,0.5,true);
                
    my_loader.= (stage.stageWidth my_loader.width)/2;
                
    my_loader.= (stage.stageHeight my_loader.height)/2;
                
    my_loader.addEventListener(MouseEvent.CLICK,removeFull);
                
    my_loader.contentLoaderInfo.removeEventListener(Event.COMPLETEfullLoaded);
                if (
    img_count==0) {
                    
    addChild(suc);
                }
                if (
    img_count==my_total-1) {
                    
    addChild(prec);
                }
                if (
    img_count!=0&&img_count!=my_total-1) {
                    
    addChild(prec);
                    
    addChild(suc);
                }
                
    prec.buttonMode=true;
                
    suc.buttonMode=true;
                
    prec.x=50;
                
    prec.y=590;
                
    suc.x=550;
                
    suc.y=590;
                
    prec.addEventListener(MouseEvent.CLICKcallPrec);
                
    suc.addEventListener(MouseEvent.CLICKcallSuc);


            }
        }


  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    4
    mi ha tolto l'indentazione..

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Perchè devi usare i tag appositi per inserire il codice sul forum. Ho modificato io, appena posso gli do uno sguardo, ma sarà un po' lunga la cosa, dovendo leggerlo tutto.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    4
    sono riuscito a farlo funzionare comunque inserendo un if e dei flag!!! E' un metodo poco ortodosso, ma perlomeno il pericolo "consegna" e' scampato..
    Quando torno a casa posto le correzioni

    rimane solo il problema della centratura dell'immagine ingrandita se si apre l'swf nel browser

    grazie mille ^_^

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