Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    354

    [as3]caricamento swf e passaggio variabili

    sto provando da giorni ma non riesco a venirne a capo, io ho un swf contenitore.swf che carica contenuto.swf

    e fin qui tutto bene, ma contenitore.swf ha delle variabili che dovrebbero esistere anche in contenuto.swf, ma non riesco a farle "passare", come posso fare?

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    aggiungi info... ad esempio, come carichi il filmato swf esterno?

    [edit] se carichi con il Loader (come è presumibile), devi utilizzare la proprietà "content" del Loader per accedere alla timeline del filmato caricato dall'esterno

    una prova funzionante

    contenuto filmato esterno:
    Codice PHP:
    var el1:String "una prova";
    var 
    el2:String "altra prova"
    contenuto filmato principale:
    Codice PHP:
    var u:String "ext.swf";
    var 
    r:URLRequest = new URLRequest(u);
    var 
    l:Loader = new Loader();
    l.contentLoaderInfo.addEventListener(Event.INITinitHandler);
    function 
    initHandler(e:Event){
        var 
    ext e.target.loader.content;
        
    trace(ext.el1); // output: una prova
        
    trace(ext.el2); // output: altra prova
    }
    l.load(r); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    354
    uso il loader, ma c'è stato un equivoco:

    devo fare il passaggio inverso, in pratica io ho una variabile nel movie principale, e devo passarla al filmato esterno

    grazie per l'aiuto che mi stai dando

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    la variabile del filmato esterno, se dichiarata in strict, dovrebbe essere fruibile semplicemente richiamandone il nome, anche sul filmato esterno

    [edit] ho provato anche in questo caso... ma non è semplice come avevo prospettato

    filmato principale con un caricamento semplicissimo:
    Codice PHP:
    var u:String "ext.swf";
    var 
    r:URLRequest = new URLRequest(u);
    var 
    l:Loader = new Loader();
    l.load(r);

    addChild(l); 
    filmato secondario, in cui ho inserito un pulsante per testare l'azione:
    Codice PHP:
    import fl.controls.Button;

    var 
    b:Button = new Button();
    b.move(100,100);
    b.setSize(20050);
    b.label "Output!";
    b.addEventListener(MouseEvent.CLICKclickHandler);
    function 
    clickHandler(e:MouseEvent) {
        
    trace(this.parent.root['u']); // output: ext.swf
    }
    addChild(b); 
    come puoi notare ho dovuto richiamare la timeline principale del filmato contenitore utilizzando parent per risalire al Loader che carica il filmato, e root per raggiungere la timeline principale del contenitore stesso
    ultimo accorgimento, per evitare errori in esportazione per il filmato secondario (in cui la variabile richiamata non esiste), l'ho passato come indice di array sotto forma di stringa, per individuarlo nel momento successivo, quando ne avessi avuto bisogno

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    354
    grazie mille, ora provo!

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    354
    è perfetto, grazie di nuovo!

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    195

    e se volessi il contrario?

    ovvero altra opzione non vista:

    lo stage carica un container

    il container carica a sua volta un container2

    a cui deve passare però una variabile

    che sarà quella utilizzata dal container2 per caricare il proprio contenuto

    Codice PHP:
    //__________stage___fotogramma 1;
    var prova2:progdettMC = new progdettMC();
    addChild(prova2);

    var 
    var_id_progetto:Number = new Number(1);//sarà: dinamico

    //__________progdettMC__fotogramma 1;
    var id_progetto root['var_id_progetto'];
    var 
    var_progFolder "images/prog" id_progetto "/small/";
    var 
    nImages:Number 3;

    //DUPLICARE imgSmall X IL NUMERO DI IMMAGINI
    var var_imgName "logo.jpg";
    var 
    myX:Number 10;
    for(var 
    i:Number 1;i<=nImages;i++){
        
    this['imgSmall' i] = new imgSmall();
        var 
    objImg this['imgSmall' i];
        
    addChild(objImg);
        
    objImg.var_imgName "image" ".jpg";
        
    objImg.myX;
        
    myX myX 210;
    }

    //__________imgSmall__fotogramma 1 per fare alcuni movimenti c'è un container anche qui :D ma è già nello stage con alpha a 0;
    var var_imgName:String "";
    progFolder parent['var_progFolder'];

    var 
    pictLdr:Loader = new Loader();
    var 
    pictURL:String progFolder var_imgName;
    trace("pictURL: " pictURL);
    var 
    pictURLReq:URLRequest = new URLRequest(pictURL);
    pictLdr.load(pictURLReq);
    pictLdr.contentLoaderInfo.addEventListener(Event.COMPLETEimgLoaded); 

    function 
    imgLoaded(event:Event):void
    {
        
    container.addChild(pictLdr.content);
            var 
    myWidth:Number pictLdr.content.width;
            var 
    myX:Number int((myWidth-190)/2);
            if(
    myX<0){myX=0;}
            
    container.= -myX;
            var 
    myHeight:Number pictLdr.content.height;
            var 
    myY:Number int((myHeight-90)/2);
            if(
    myY<0){myY=0;}
            
    container.= -myY;
            
    trace("myWidth: " myWidth);
            
    trace("myX: " myX);
                    
    container.alpha=100;

    Come posso fare a passare la variabile di imgName da progdetMC al suo interno imgSmall?

    così com'è sembrerebbe giusto ma se guardate il trace("pictURL") è vuoto

    bah!
    mamma mia che bestia

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    perdonami ma non ho capito nulla apparte il fatto che devi passare una variabile ad un filmato dentro un altro filmato... il concetto non cambia ma dovresti giocare un attimo con la variabile passandola prima al primo filmato caricato e da lì utilizzando "parent" ecc... passarla al secondo filmato, perchè non so se la visibilità si perde per strada, e probabilmente stamane sono un po' flashato, ma non ho compreso bene il codice... al massimo se si tratta di codice messo in parti o filmati diversi, potresti separarli? così riesco a leggerli meglio... pardon

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    195

    ma certo...

    ...sorry non mi sono spiegato bene
    quello che non riesco a fare è che mediante un ciclo for metto a video un oggetto salvato in libreria esportato per actionscript che necessita di una variabile che però deve provenire dal ciclo stesso

    diciamo che l'oggetto caricato myObj ha all'interno un trace:
    Codice PHP:
    var myVar:String = new String();
    trace("myVar: " myVar); 
    e l'oggetto che invece fa il ciclo e dunque mette a video il mio myObj ha dentro questo:
    Codice PHP:
    for(var i:Number 1;i<=3;i++){
        var 
    objImg;myObj = new myObj();
        
    addChild(objImg);
        
    objImg.myVar i;

    ma penso di aver capito che effettivamente (proprio in questo momento) devo aggiungere l'evento loaderInfo associato a objImg, ma il problema è che non riesco a passare la mia "i" alla funzione di finecaricamento (caricavariabile)
    ovvero:
    Codice PHP:
    for(var i:Number 1;i<=3;i++){
        var 
    objImg;myObj = new myObj();
        
    objImg.contentLoaderInfo.addEventListener(Event.COMPLETEcaricavariabile);


    function 
    caricavariabile(e:Event):Void{
      var 
    myObj e.target;
      
    myObj.myVar "BOH!";

    non capisco come mai non hanno controllato questa cosa nella costruzione dello script
    faccio un esempio: ("obj" è un oggetto qualsiasi che compie un evento)
    Codice PHP:
    //come è ora
      
    obj.contentLoaderInfo.addEventListener(Event.COMPLETEcaricavariabile);
    //come dovrebbe essere
      
    obj.contentLoaderInfo.addEventListener(Event.COMPLETEcaricavariabile(1));
    function 
    caricavariabile(e:Eventmiavariabile:Number){
      
    trace(miavariabile);

    non sò nemmeno se stò dicendo una castroneria ma se potessi passare variabile alle mie funzioni sarebbe tutto un altro mondo, almeno per me

    help
    mamma mia che bestia

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    no quel che chiedi non si può fare, però se il myObj discende dalla classe MovieClip, non dovresti avere problemi ad aggiungere la variabile indicativa come fai ora... perciò ti chiedo: cos'è myObj?

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.