Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282

    effetto mirror ad un swf esterno

    Ciao a tutti. Volevo chiedere un aiuto per applicare ad un swf esterno l'effetto mirror.
    da premettere che utilizzo la classe mirror gentilmente offerta da And80 :-)

    allora per inserire un swf esterno utilizzo:

    var r:Mirror = new Mirror(prova, 0, 50, 50); // è lo script che chiama la classe

    poi per inserire un swf esterno è questo:

    var prova:MovieClip = this.createEmptyMovieClip("prova",this.getNextHigh estDepth());
    prova.loadMovie("88x31.swf"); // Replace "text.swf" with the filename of your SWF Text generated flash movie here
    prova._x = 100; // Adjust the position if needed
    prova._y = 100;

    beh il file esterno lo carica ma non c'è nessuno effetto mirror
    dove sbaglio?
    grazie per l'aiuto...
    Tony

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    ho provato anche ad applicarlo ad un mc all'interno del filmato stesso...ma mi rifletto solo il primo fotogramma...come faccio per applicarlo a tutti i fotogrammi?

    graie a tutti
    ciao
    Tony

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ciao tony, l'effetto mirror, come altri effetti del genere, viene effettuato con copia bitmap dell'elemento "target", nel tuo caso "prova"
    però chiaramente quando inizia il caricamento il clip è vuoto e se l'effetto viene dato prima che il caricamento sia completato, lo specchio ci sarà, ma sarà vuoto
    quindi per applicare lo specchio ad un filmato esterno devi prima attenderne il caricamento e lo fai con un preload, nel tuo caso, sfruttando la classe MovieClipLoader

    Codice PHP:
    var prova:MovieClip this.createEmptyMovieClip("prova"this.getNextHighestDepth());
    var 
    loader:MovieClipLoader = new MovieClipLoader();
    var 
    listener:Object = new Object();
    listener.onLoadInit = function (target:MovieClip) {
        var 
    m:Mirror = new Mirror(target05050);
    }
    loader.addListener(listener);
    loader.loadClip("88x31.swf"prova); 

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da raziel1973
    ho provato anche ad applicarlo ad un mc all'interno del filmato stesso...ma mi rifletto solo il primo fotogramma...come faccio per applicarlo a tutti i fotogrammi?

    graie a tutti
    ciao
    Tony
    la classe non lo prevede, bisognerebbe aggiungere un "refresh" che ogni tot elimini il clip attuale e lo ricrei, o meglio, che elimini i clip contenuti nel "mirrorClip" e li ridisegni

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    quant'è complesso...
    o.k. non mi arrendo!!!
    ma facendo un refresh la cpu non va sotto stress?

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da raziel1973
    quant'è complesso...
    o.k. non mi arrendo!!!
    ma facendo un refresh la cpu non va sotto stress?
    sì, infatti è un metivo per cui ho evitato
    anche se so che esistono altre classi per gli specchi che hanno anche il refresh automatico
    se provi a cercare "as2 mirror class" in un motore di ricerca, ne dovresti beccare parecchie

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    Grazie And...
    ho trovato però ben poco as2 mirror class...puoi darmi qualche aiutino in piu'?
    ma se non puoi hai già fatto tanto.
    Grazie

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ricordavo che con una ricerca del genere mi erano usciti diversi risultati utili, ma in effetti ora non trovo nulla neanche io, forse ricordo male i termini
    ho scritto anche un'altra classe con il refresh, ma è in AS3 e non è compatibile
    se ho del tempo libero, cerco di implementare il refresh manuale ( una funzione refresh() da usare dentro un onEnterFrame così che avvenga con una frequenza di aggiornamento accettabile e venga usata solo se necessario)

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    282
    Grazie And...
    sei un vero amico...

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ecco qui un pochino migliorata anche nella creazione dello specchio, sfrutta il metodo refresh() che quando viene richiamato ridisegna gli elementi dentro il clip "mirror"

    Codice PHP:
    import flash.display.BitmapData;
    import flash.geom.Matrix;
    class 
    Mirror {
        private var 
    __t:MovieClip;
        private var 
    __d:Number;
        private var 
    __o:Number;
        private var 
    __u:Number;
        private var 
    __m:MovieClip;
        private var 
    __b:MovieClip;
        private var 
    __g:MovieClip;
        private var 
    __v:Array;
        function 
    Mirror (t:MovieClipd:Numbero:Numberu:Number) {
            
    __t t;
            
    __d d;
            
    __o o;
            
    __u u;
            
    __m __t._parent.createEmptyMovieClip("mirror"__t._parent.getNextHighestDepth());
            
    __init__ ();
        }
        private function 
    __init__ () {
            
    __b __m.createEmptyMovieClip("bitmap"1);
            
    __g __m.createEmptyMovieClip("gradient"2);
            
    __gradientshape__(__g__t._width__t._height*(__u/100), __o);
            
    __b.cacheAsBitmap __g.cacheAsBitmap true;
            
    __b.setMask(__g);
            
    __v = [];
            
    __v.push(new BitmapData(__t._width__t._heighttrue0));
            
    __v.push(new Matrix());
            
    __v.push(__t.getRect(__t));
            
    __v[1].translate(-__v[2].xMin, -(__t._height+__v[2].yMin));
            
    __v[1].scale(1, -1);
            
    __v[0].draw(__t__v[1]);
            
    __b.attachBitmap(__v[0], 1);
            
    __b._x __g._x __v[2].xMin+1;
            
    __b._y __g._y __v[2].yMin;
            
    __m._x __t._x;
            
    __m._y __t._y+__t._height+__d;
        }
        private function 
    __gradientshape__ (t:MovieClipw:Numberh:Numbera:Number) {
            var 
    matr:Matrix = new Matrix();
            
    matr.createGradientBox(wh90/180*Math.PI00);
            
    t.beginGradientFill("linear", [00], [a0], [0255], matr"pad");
            
    t.lineTo(w0);
            
    t.lineTo(wh);
            
    t.lineTo(0h);
            
    t.lineTo(00);
            
    t.endFill();
        }
        public function 
    refresh () {
            
    __b.removeMovieClip();
            
    __g.removeMovieClip();
            
    __init__();
        }
        public function 
    set distance (d:Number) {
            
    __d d;
        }
        public function 
    get distance ():Number {
            return 
    __d;
        }
        public function 
    set opacity (o:Number) {
            
    __o o;
        }
        public function 
    get opacity ():Number {
            return 
    __o;
        }
        public function 
    set uncovered (u:Number) {
            
    __u u;
        }
        public function 
    get uncovered ():Number {
            return 
    __u;
        }
        public function 
    get mirror ():MovieClip {
            return 
    __m;
        }

    nel mio esempio l'ho usata così:
    Codice PHP:
    var r:Mirror = new Mirror (prova05050);
    onEnterFrame = function () {
        
    r.refresh();
    }
    setTimeout(function(){prova.prova.text "ciao"}, 5000);
    setTimeout(function(){prova.prova.text "f*ck"}, 10000);
    setTimeout(function(){prova.prova.text "riprova"}, 15000); 
    usando il setTimeout per cambiare il testo dentro al campo (deve essere dinamico, chiamarsi "prova" e avere il testo incorporato)

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.