Visualizzazione dei risultati da 1 a 9 su 9

Discussione: PhotoMatrixMotion

  1. #1

    PhotoMatrixMotion

    Innanzitutto un grazie a and80 per aver condiviso questa cosa fighissima. Ma mi domandavo un paio di cose.

    codice:
    		mm.effect
    		mm.onRollOver=function(){
    			//var trans:Transform = new Transform(this);
    			//trans.colorTransform = colorTrans_2
    			this.effect = new PhotoMatrixMotion(this, "normal", "luminance", None.easeNone, 50, false);			
    		}
    		mm.onRollOut=mm.onDragOut=function(){
    			//var trans:Transform = new Transform(this);
    			//trans.colorTransform = colorTrans_1
    			this.effect = new PhotoMatrixMotion(this, "luminance", "normal", None.easeNone, 50, false);
    		}
    Si può passare come stato iniziale un valore del tipo "attuale" perchè se io faccio in out nel mezzo delle transizioni non parto da normal e da luminance.

    Chiedo troppo? E' già possibile farlo ma sono n00b? Richiede troppo sbatti? Nel caso lascia perdere^^

    Per capirci sarebbe un po' come in una tween così

    new Tween(target, "_alpha", Regular.easeOut, target._alpha,100,20,false)

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    prova così

    Codice PHP:
    import mx.transitions.easing.*;
    var 
    matr:Object = new PhotoMatrixMotion(mc"satured""satured"None.easeNone.1true);
    var 
    mt:Array = matr.matrix;
    mc.onRollOver = function() {
        
    mt _root.matr.matrix;
        
    _root.matr = new PhotoMatrixMotion(mcmt"normal"None.easeNone.5true);
    };
    mc.onRollOut = function() {
        
    mt _root.matr.matrix;
        
    _root.matr = new PhotoMatrixMotion(mcmt"satured"None.easeNone.5true);
    }; 

  3. #3
    Lunedì provo e ti faccio sapere

  4. #4
    Non mi pare che funzi, ho provato a fare il trace di matr.matrix appena dopo lanciata
    var matr:Object = new PhotoMatrixMotion(mc, "satured", "satured", None.easeNone, .1, true);

    e ho undefined

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    devo aggiornare il link, mi pareva di averlo fatto

    la classe corretta è questa:

    Codice PHP:
    import mx.transitions.*;
    import mx.transitions.easing.*;
    import flash.filters.ColorMatrixFilter;
    class 
    PhotoMatrixMotion {
        
    /*
        Elenco degli effetti disponibili
        "normal", "luminance", "negative", "satured", "in_satured", "hue", "contrast", "in_contrast", "deep_red", "deep_blue", "deep_yellow", "fluorescent", "sepia"
        */
        
    private var normalMatrix:Array = [10000010000010000010];
        private var 
    luminanceMatrix:Array = [1000255010025500102550001255];
        private var 
    negativeMatrix:Array = [-10002550, -10025500, -1025500010];
        private var 
    saturedMatrix:Array = [0.30860.60940.082000.30860.60940.082000.30860.60940.0820000010];
        private var 
    in_saturedMatrix:Array = [3.0742, -1.8282, -0.24600, -0.92582.1718, -0.24600, -0.9258, -1.82823.7540000010];
        private var 
    hueMatrix:Array = [-0.5741.430.144000.4260.430.144000.4261.43, -0.8560000010];
        private var 
    contrastMatrix:Array = [000063.5000063.5000063.500010];
        private var 
    in_contrastMatrix:Array = [11000, -63501100, -63500110, -63500010];
        private var 
    deep_redMatrix:Array = [10000000000000000010];
        private var 
    deep_blueMatrix:Array = [00000000000010000010];
        private var 
    deep_yellowMatrix:Array = [01000010000000000010];
        private var 
    fluorescentMatrix:Array = [00000100000000000010];
        private var 
    sepiaMatrix:Array = [0.350.350.35000.300.300.30000.210.210.210000010];
        
    // Variabili della classe
        
    private var __target:MovieClip;
        private var 
    __initialMatrix:Array;
        private var 
    __finalMatrix:Array;
        private var 
    __easeType;
        private var 
    __time:Number;
        private var 
    __useSeconds:Boolean;
        
    // Eventi
        
    public var onMotionFinished:Function;
        
    // Costruttore della classe
        
    function PhotoMatrixMotion(target:MovieClipfrom:Objectto:ObjecteaseType:Function, time:NumberuseSeconds:Boolean) {
            
    __target target;
            
    __initialMatrix return_matrix(from);
            
    __finalMatrix return_matrix(to);
            
    __easeType easeType;
            
    __time time;
            
    __useSeconds useSeconds;
            
    __process__(__target__initialMatrix__finalMatrix__easeType__time__useSeconds);
        }
        private function 
    return_matrix(effect):Array {
            if (
    typeof(effect) == "string") {
                var 
    matrix:Array = this[effect+"Matrix"].slice(0this[effect+"Matrix"].length-1);
                return 
    matrix;
            } else {
                var 
    matrix:Array = effect.slice(0effect.length);
                return 
    matrix;
            }
        }
        private function 
    __process__(target:MovieClipfrom:Array, to:Array, easeType:Function, time:NumberuseSeconds:Boolean):Void {
            
    target.filters = [new ColorMatrixFilter(from)];
            var 
    path:Object this;
            for (var 
    0i<from.lengthi++) {
                
    this['tw'+i] = new Tween(fromi.toString(), easeTypefrom[i], to[i], timeuseSeconds);
                
    this['tw0'].onMotionChanged = function() {
                    
    target.filters = [new ColorMatrixFilter(from)];
                };
                
    this['tw0'].onMotionFinished = function() {
                    
    path["onMotionFinished"]();
                };
            }
        }
        public function 
    get matrix():Array {
            return 
    this['__initialMatrix'];
        }


  6. #6
    Ok, domani provo

  7. #7
    Ok, finalmente ho avuto un po' di tempo per provare, e confermo che funziona

    Grazie

    Edit: piccola aggiunta.


    La prima animazione credo serva solo per creare l'oggetto e quindi caricare una matrice di partenza. Nell'esempio hai usato satured satured, ma immagino vada bene qualsiasi valore (e per correttezza direi il valore che avrà lo stato "naturale" della foto).

    Se quanto detto è giusto credo ci sia qualche piccolo inghippo nelle matrici.
    Se vado da normal a in_contrast e poi torno indietro (anche facendo completare le tween), la foto mi rimane un po' blu.

    Personalmente non mi crea un problema, ma volevo segnalartela.

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ho fatto diversi test e non ho avuto riscontri del genere, apparte un riabituarsi più lento dell'occhio se il passaggio era forte (es da fluorescente a normale)

  9. #9
    Avrò sbagliato qualcosa io

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.