Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17

Discussione: Riflessi AS3

  1. #11
    c'avevo provato

    Codice PHP:
    function giraTutto() {
        
        
        
        for (var 
    i=1i<=1i++) {
            
            var 
    cosa=getChildByName("mc" i);
            var 
    rifl=getChildByName("rifl"+i);
            
    //trace(cosa);
            
    trace(cosa.rifl);
            
    //cosa.removeChild(rifl);
            
    cosa.play();
            

        }


    ma non funziona, il trace è undefined


    mi sa che provo come mi avevi suggerito al'inizio

  2. #12
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da and80
    ok, adesso è chiaro... il riflesso non viene aggiunto nello stage, ma direttamente sull'oggetto che deve riflettere, ossia su mc1, mc2 ecc...
    perciò se ad esempio devi cancellare rifl1, devi farlo da mc1

    mc1.removeChild(rifl1);

    dovrebbe andare
    No, la situazione è ancora diversa, in realtà il riflesso non è un elemento di visualizzazione come ci si aspetterebbe, è solo un "vettore" che crea gli oggetti che compongono la trasparenza, in pratica non è neanche necessario che estenda la classe MovieClip.

    Ho modificato un po' quel codice e aggiunto la funzione "remove()" che elimina i clip che creano il riflesso dando l'idea che sia l'intero riflesso ad andarsene:
    Codice PHP:
    package {
        
    import flash.display.MovieClip;
        
    import flash.display.BitmapData;
        
    import flash.display.Bitmap;
        
    import flash.geom.Matrix;
        
    import flash.display.GradientType;
        
    import flash.display.SpreadMethod;
        public class 
    rifletti {
            private var 
    T:MovieClip
            
    private var W:Number;
            private var 
    H:Number;
            private var 
    D:BitmapData;
            private var 
    R:Bitmap;
            private var 
    B:MovieClip;
            private var 
    M:Matrix;
            public function 
    rifletti(mc:MovieClipdistanza:Number=0.0colore:uint=0influ:uint=255) {
                
    mc;
                
    T.height;
                
    T.width;
                
    = new BitmapData(WHtrue0xFFFFFF);
                
    D.draw(T);
                
    = new Bitmap(D);
                
    R.scaleY = -1;
                
    R.T.height distanza;
                
    R.name "riflesso";
                
    T.addChild(R);
                
    = new MovieClip();
                
    = new Matrix();
                
    M.createGradientBox(WH, (90/180)*Math.PI00);
                
    B.graphics.beginGradientFill(GradientType.LINEAR, [colore,colore], [0,1], [0,influ], MSpreadMethod.PAD);
                
    B.graphics.drawRect(00WH);
                
    B.R.R.height;
                
    T.addChild(B);
            }
            public function 
    remove () {
                
    T.removeChild(R);
                
    T.removeChild(B);
            }
        }

    testato così:
    Codice PHP:
    var rifl:rifletti = new rifletti(mc100100); // mc è un clip sullo stage
    var t:Timer = new Timer(20001);
    t.addEventListener(TimerEvent.TIMER, function (e:TimerEvent) {r.remove()});
    t.start(); 
    dopo due secondi il riflesso scompare perchè viene richiamata la funzione remove()

  3. #13
    quindi se io volessi richiamarla durante la mia funzione
    dovrei fare qualcosa tipo

    Codice PHP:
        
        
    for (var i=1i<=1i++) {
            
            var 
    cosa=getChildByName("mc" i);
            
            
            
    cosa.remove(); 
        
            
    cosa.play();

        } 

  4. #14
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Eh no, lo fai solo sul riflesso assegnato, tipo rifl1.remove(), rifl2.remove() ecc

  5. #15
    ok and come dici tu funziona (ovviamente)!
    ma... se non esiste più "eval"
    e var rifl=getChildByName("rifl"+i);
    non funziona nemmeno
    come faccio nel ciclo for a combinare rifl+i per eliminare il riflesso che mi serve!

  6. #16
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    L'unico modo di gestire la cosa è fare come ti ho detto nel mio primo post, ossia registri i vari riflessi dentro un array e poi usi l'array per gestire il ciclo che dovrà eliminare i riflessi, ovviamente modificando la funzione giraTutto per lanciare la funzione clear.

    Codice PHP:
    function giraTutto () {
        for (var 
    j:uint=0j<a_rifl.lengthj++) {
            
    a_rifl[j].remove();
            
    a_mc[j].play();
        }


  7. #17
    mi ero incaponito inutilmente...evvabè...

    ho messo tutto come mi avevi suggerito all'inizio e funziona perfettamente...

    grazie 10000 and

    anche se continuo non capire la logica di as3...bu !

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.