Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    mirror mc con animazione [cs3 play8 AS2]

    Salve a tuti,
    Sto utilizzando la classe mirror e tutto funge ok tranne che ovviamente sugli mc che contengono animazioni all'interno o "parti mobili", pur avendo letto diversi 3d in materia non sono riuscito a risolvere il problema...
    Qualcuno e' in grado di darmi delucidazioni o indicarmi una via...

    Nello specifico ho un mc all'interno del quale ce' un livello maskera su 4 immagini differenti che vengono richiamate dall'esterno...

    questo e' il contenuto della mia classe mirror.as:
    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(__getname__(), __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;
            
    __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();
        }
        private function 
    __getname__ ():String {
            var 
    r:String "";
            var 
    s:String "abcdefghkijlmnopqrstuvwxyz0123456789ABCDEFGHKIJLMNOPQRSTUVWXYZ";
            var 
    a:Array = s.split("");
            for(var 
    i:Number 06i++){
                var 
    n:Number Math.floor(Math.random()*a.length);
                
    r+=a[n];
            }
            return 
    r;
        }
        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;
        }

    la classse la richiamo cosi:
    var r:Mirror = new Mirror(mc,0, 50, 100);


    Qualora ci fosse qualcuno dotato di buona volonta', sarei anche curioso di capire se fosse possibile distorcere l'immagine riflessa con un effetto tipo skew cioe' variando indipendentemente le dimensioni in larghezza dei due bordi superiore ed inferiore dell'immagine, per ottenere un effetto di riflessione su un piano ortogonale all'immagine riflessa...

    grazie a tutti, sempre e comunque...
    Se i sogni sopravvivono ad altezze considerevoli, allora è probabilmente vero che vadano scritti tra le stelle...

    A'donf!

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    dipende un po' dall'animazione che hai nell'mc da riflettere, ma in generale nella classe esiste la funzione "refresh" che quando viene richiamata ridisegna il riflesso in base alla nuova situazione del clip sorgente, perciò richiamando costantemente la funzione refresh dentro un enterFrame otterresti il movimento sia nell'mc da riflettere che sul riflesso.

    Riguardo allo skew, l'unico possibile facilmente è con la classe Matrix ed è descritto in questa pagina: http://www.senocular.com/flash/tutor...ansformmatrix/

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.