Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1

    problemi con contentLoaderInfo con MouseEvent

    io ho un fla in cui ho la seguente azione (come Document Class) all'interno di una funzione che richiama dati XML attraverso cui vengono create una serie di mc all'interno dei quali lego un swf esterno. tutto funziona.

    nell'SWF esterno ho poi uno stop nel primo fotogramma chiave e nell'ultimo chiave.
    quindi viene caricato l'swf in un mc_load (che viene agganciato con addChild al primo mc "citystart") e questo, giustamente, rimane fermo.


    ora vorrei che cliccando sull'mc "citystart" parta l'animazione con un gotoAndPlay dell'swf caricato (mc_load).
    il click viene intercettato, ma non riesco a fare partire il contenuto...
    io ho scritto qusto ma non funziona...



    Codice PHP:

                
    var mc:citystart = new citystart();
                    
    mc.name e.partenza;
                    
    mc.Xval_part;
                    
    mc.Yval_part;
                    
    mc.nomecitta.nomecity.htmlText=mc.name;
                    
    addChild(mc);
                    
                var 
    mc_load:Loader = new Loader();
                    
    mc_load.name="Ldr"+mc.name;
                 var 
    url:String "city/"+mc.name+".swf";
                 var 
    urlReq:URLRequest = new URLRequest(url);
                 
    mc_load.load(urlReq);
                 
                
    //questo non funziona
                
    var loaderMovieContent:MovieClip MovieClip(mc_load.contentLoaderInfo);
     
                 
    mc.addChild(mc_load);
                 
    mc.addEventListener(MouseEvent.CLICKvannanz);
                    
                 function 
    vannanz(e:Event):void  {
                    
    //questo non funziona
                    
    var cont:MovieClip loaderMovieContent.content as MovieClip;
                    
    cont.gotoAndPlay (2);

                     
    trace("listener:"+e)
                     
    trace("listener:"+cont)
                 } 
    Rey
    La vita è un panaro, non sai mai quello che ti esce!
    photorealistic 3D rendering and animations and WEB Design

  2. #2
    Santo cielo... era così facile una volta...

    mi pare di capire che ora una cosa del genere sia impossibile se non per esperti programmatori con anni di esperienza... ormai son più di tre giorni che ci muoio dietro e non avanzo di un gradino... ho fatto ricerche ovunque e ho trovato codici che mi sembrava facessero al caso mio... ma nulla. non riesco a capirli e a modellarli al mio scopo.
    Sarà l'ora ma me ne vado a letto depresso e vinto.

    Mi sa che torno ad as2 per questo progetto... e butterò via una settimana di lavoro inutile e poi dopo questo progetto abbandonerò flash, per cui direi di non essere proprio portato...

    Scusate lo sfogo... ma mi sono un po' innervosito. E' una situazione che a me in flash è sempre capitata quella che ho esposto,e se diventa così complicata diventa antieconomica.

    Vi ringrazio comunque tutti di cuore che fino ad ora siete sempre stati utili e mitici nelle risposte. Se vi viene in mente una soluzione sono tutto orecchi e pronto a riprendere. però ormai il tempo stringe quindi intanto provo a rifarmi anche tutto in AS2... mamma mia...
    Rey
    La vita è un panaro, non sai mai quello che ti esce!
    photorealistic 3D rendering and animations and WEB Design

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non perderti d'animo, semplicemente il LoaderInfo non è una classe visuale e non può essere nè un movieclip nè altra classe visuale, nel tuo caso ti servirebbe il "content" del Loader su cui effettui il caricamento, ma bisognerebbe vedere il resto del codice per capire cosa sia e da dove provenga quel "mc_load".
    Chiaramente nessuno ti vieta di tornare ad AS2, ma a quel punto potresti tornare anche ad AS1 per evitare di preoccuparti ad esempio della differenza tra maiuscole e minuscole

  4. #4
    oggi mi sono svegliato con un altro spirito. anche perchè finalmente ho riposato fresco. Sono corso in libreria è ho preso un manualetto che spiega un minimo di basi di as3... e mi sono buttato a capofitto a leggerlo. per ora non mi dice nulladi nuovo, ma sono all'inizio... speriamo che poi mi risolva le mie lacune più gravi...

    grazie and per la risposta, comunque mi hai rincuorato.
    nel tuo caso ti servirebbe il "content" del Loader su cui effettui il caricamento
    indicativamente avevo intuito che serviva un content del Loader da alcuni post che ho letto... ([AS3] mandare in play SWF esterno ) ma non sono riuscito ad adattare il concetto a quello che serve a me...

    ti posto il codice di cui una parte già la conosci perchè ti avevo fatto già altre domande sull'xml... mi pare..

    Codice PHP:
    package lib //percorso (cartelle) in cui si trova la classe
    {
        
    import flash.display.MovieClip;
        
    import flash.events.Event;
        
    import flash.display.Sprite;
        
    import lib.utility.*;
        
    import flash.events.MouseEvent //per gestire eventi mouse
        
    import flash.net.URLRequest;
        
    import flash.display.Loader;
        
    import flash.display.LoaderInfo;
        
    import flash.display.DisplayObject;


        
        public class 
    Game extends MovieClip
        
    {
            private var 
    aggiorna:Aggiornamento;
            var 
    Xval_part:Number;
            var 
    Yval_part:Number;
            var 
    Xval:Number;
            var 
    XValore:String;
            var 
    Yval:Number;
            var 
    YValore:String;
            
            var 
    urlFile        :String;
            var 
    urlRichiesta   :URLRequest;
            var 
    mc_load  :Loader;
            
            function 
    XMLcomplete (evt:Event null):void {
                var 
    el:Array = evt.target.data;
                
    el.forEach(XMLcallback);
            }
            function 
    XMLcallback (e:*, i:uinta:Array):void {
                
    trace("***************");
                
    trace(e.id);
                
    trace(e.partenza); 
                
    trace("Coordinate partenza:");
                
    XValore e.partenza_Xcoords;
                
    YValore e.partenza_Ycoords;
                
    Xval_part Number(XValore);
                
    Yval_part Number(YValore);
                
    trace("partenza.X= "+Xval_part+", partenza.Y = "+Yval_part);
                
    XValore e.arrivi_Xcoords;
                
    YValore e.arrivi_Ycoords;
                
    Xval Number(XValore.split(",")[0]);
                
    Yval Number(YValore.split(",")[0]);
                
    trace("Coordinate arrivi:");
                
    trace(e.arrivi);
                
    trace("arrivo.X= "+Xval+", arrivo.Y = "+Yval);
                
    trace(e.arrivi_h);
                
    trace(e.arrivi_h_m);
                
    trace(e.arrivi_h_t);
                
                var 
    mc:citystart = new citystart();
                    
    mc.name e.partenza;
                    
    mc.Xval_part;
                    
    mc.Yval_part;
                    
    mc.nomecitta.nomecity.htmlText=mc.name;
                    
    addChild(mc);
                    
                var 
    mc_load:Loader = new Loader();
                var 
    url:String "city/"+mc.name+".swf";
                var 
    urlReq:URLRequest = new URLRequest(url);
                
    //mc_load = new Loader();
                
    mc_load.load(urlReq);
                
    mc_load.name="Ldr"+mc.name;
                
    trace("listener:"+mc.name);
                
    //mc_load_Info.addEventListener(Event.COMPLETE, CaricamentocompletatoSWF);
                
    mc.addChild(mc_load);
                
    mc.addEventListener(MouseEvent.CLICKplayMyMovie (mc_load));
                
                function 
    playMyMovie (target:Loader) {
                    
                    
    trace("problema:"+target.name);
                    
    target.gotoAndPlay(2);
                    
    trace("fine problema.");
                } 
                
                    
                
    trace("______________________");
            }        

            public function 
    Game()
            {
                
    trace('La Document Class è stata instanziata correttamente');
                
    aggiorna=new Aggiornamento();
                
                var 
    parser:XMLLoader = new XMLLoader("data/percorsi.xml");
                
    parser.addEventListener(Event.COMPLETEXMLcomplete);
            
            }
        }

    vengono generati una serie di mc a partire da dati xml che danno:
    nome del mc e dell'swf da caricare e sul quale l'mc che lo carica deve lavorare aul click..,
    posizione mc
    e altri dati generici.

    il tutto funziona tranne il fatto di far partire l'animazione dell'swf caricato al clicc dell mc a cui è legato...

    grazie per l'aiuto...
    Rey
    La vita è un panaro, non sai mai quello che ti esce!
    photorealistic 3D rendering and animations and WEB Design

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Capisco, l'uso dei listener e la loro non immediatezza è uno dei primi problemi che si affrontano in AS3, ma possono essere facilmente risolti con il consapevole utilizzo del parametro di evento che viene passato automaticamente alle funzione legate agli eventi.
    Io la tua classe la vedo così:
    Codice PHP:
    package lib {
        
    import flash.display.*;
        
    import flash.events.Event;
        
    import flash.net.URLRequest;
        
    import lib.utility.*;
        public class 
    Game extends MovieClip {
            private var 
    aggiorna:Aggiornamento;
            private var 
    parser:XMLLoader;
            private var 
    mcs:Array;
            public function 
    Game ():void {
                
    aggiorna = new Aggiornamento();
                
    parser = new XMLLoader("data/percorsi.xml");
                
    parser.addEventListener(Event.COMPLETEcomplete);
            }
            private function 
    complete (evt:Event null):void {
                Array(
    evt.target.data).forEach(callback);
            }
            private function 
    callback (e:*, i:uinta:Array):void {
                
    mcs.push(addChild(new citystart()));
                
    mcs[i].Number(e.partenza_Xcoords);
                
    mcs[i].Number(e.partenza_Ycoords);
                
    mcs[i].nomecitta.nomecity.htmlText mcs[i].name e.partenza;
                var 
    loader:Loader mcs[i].addChild(new Loader()) as Loader;
                
    loader.name "loader";
                
    loader.contentLoaderInfo.addEventListener(Event.COMPLETEimg_complete);
                
    loader.load (new URLRequest("city/"+mcs[i].name+".swf"));
            }
            private function 
    img_complete (evt:Event null):void {
                
    Loader(evt.target.loader).parent.addEventListener(MouseEvent.CLICKplayMovie);
            }
            private function 
    playMovie (evt:MouseEvent null):void {
                var 
    mc:MovieClip Loader(evt.target.getChildByName("loader").content);
                
    mc.gotoAndPlay(2);
            }
        }


  6. #6
    ho provato il tuo codice, e mi sono usciti due errori:

    1067: Implicit coercion of a value of type flash.display:Loader to an unrelated type flash.display:MovieClip.
    Codice PHP:
    var mc:MovieClip Loader(evt.target.getChildByName("loader").content); 
    come devo fare per correggere?


    e
    Warning: 1112: Array(x) behaves the same as new Array(x). To cast a value to type Array use the expression x as Array instead of Array(x).
    Codice PHP:
    Array(evt.target.data).forEach(callback); 
    cho ho eliminato scrivendola così...
    Codice PHP:
     evt.target.data as Array;
    evt.target.data.forEach(callback); 
    è corretto?
    Rey
    La vita è un panaro, non sai mai quello che ti esce!
    photorealistic 3D rendering and animations and WEB Design

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Due errori di distrazione per la fretta con cui ho scritto il codice, il primo ha una parentesi spostata, dovrebbe essere:
    var mc:MovieClip = Loader(evt.target.getChildByName("loader")).conten t;

    Il secondo dovrebbe essere già un array dalla classe XMLLoader (se è quella che abbiamo scritto insieme), ed effettivamente è sbagliato tentare di rifarne il casting in quel modo.

  8. #8
    No. Niente da fare... mi ripete l'errore alla riga 37:

    Codice PHP:
     var mc:MovieClip Loader(evt.target.getChildByName("loader")).content
    1118: Implicit coercion of a value with static type flash.displayisplayObject to a possibly unrelated type flash.display:MovieClip.

    per sicurezza ti riscrivo il codice completo... con le ultime due correzioni...

    Codice PHP:
    package lib {//percorso (cartelle) in cui si trova la classe
        
        
    import flash.display.*;
            
    import flash.events.Event;
            
    import flash.net.URLRequest;
            
    import lib.utility.*;
        
    import flash.events.MouseEvent//per gestire eventi mouse
        
        
    public class Game extends MovieClip {
            private var 
    aggiorna:Aggiornamento;
            private var 
    parser:XMLLoader;
            private var 
    mcs:Array;
            public function 
    Game ():void {
                
    aggiorna = new Aggiornamento();
                
    parser = new XMLLoader("data/percorsi.xml");
                
    parser.addEventListener(Event.COMPLETEcomplete);
            }
            private function 
    complete (evt:Event null):void {
               
    // Array(evt.target.data).forEach(callback);
                
    evt.target.data as Array;
                
    evt.target.data.forEach(callback);
            }
            private function 
    callback (e:*, i:uinta:Array):void {
                
    mcs.push(addChild(new citystart()));
                
    mcs[i].Number(e.partenza_Xcoords);
                
    mcs[i].Number(e.partenza_Ycoords);
                
    mcs[i].nomecitta.nomecity.htmlText mcs[i].name e.partenza;
                var 
    loader:Loader mcs[i].addChild(new Loader()) as Loader;
                
    loader.name "loader";
                
    loader.contentLoaderInfo.addEventListener(Event.COMPLETEimg_complete);
                
    loader.load (new URLRequest("city/"+mcs[i].name+".swf"));
            }
            private function 
    img_complete (evt:Event null):void {
                
    Loader(evt.target.loader).parent.addEventListener(MouseEvent.CLICKplayMovie);
            }
            private function 
    playMovie (evt:MouseEvent null):void {
                var 
    mc:MovieClip Loader(evt.target.getChildByName("loader")).content;
                
    mc.gotoAndPlay(2);
            }
        }

    Rey
    La vita è un panaro, non sai mai quello che ti esce!
    photorealistic 3D rendering and animations and WEB Design

  9. #9
    E' sbagliato il casting, vai così:

    var mc:MovieClip = MovieClip(evt.target.getChildByName("loader")).con tent;

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    No il casting del Loader è corretto, ma bisogna aggiungere anche il casting del "content"

    var mc:MovieClip = MovieClip(Loader(evt.target.getChildByName("loader ")).content);

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.