Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: trasformazione colore

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    477

    trasformazione colore

    Ho scaricato un esempio di Sephirot che permette di cambiare colore ad un clip 'virando' dall'attuale colore.
    Se volete vederlo e scaricarlo è QUI

    Come vedete nell'esempio il colore cambia ad ogni pressione del mouse. Vorrei riuscire invece a cambiare colore al MC cliccando su un pulsante.....non dovrebbe essere difficile ma non mi viene
    Ecco il codice.

    Sul MC che cambia colore:
    codice:
    onClipEvent (load) {
    	colore = new Color(this);
    	trasforma = new Object();
    	trasforma = {rb:100, gb:100, bb:255};
    	colore.setTransform(trasforma);
    	col_ar = new Array();
    	count = 0;
    }
    onClipEvent (mouseDown) {
    	col_ar = _root.getColor(this);
    	rb = random(255);
    	gb = random(255);
    	bb = random(255);
    	new_ar = new Array(rb, gb, bb);
    	diff_ar = new Array((new_ar[0]-col_ar[0]), (new_ar[1]-col_ar[1]), (new_ar[2]-col_ar[2]));
    	cambia = true;
    	count = 0;
    	trasforma.rb = col_ar[0];
    	trasforma.gb = col_ar[1];
    	trasforma.bb = col_ar[2];
    }
    onClipEvent (enterFrame) {
    	if (cambia && (count<20)) {
    		trasforma.ra = 100;
    		trasforma.rb += diff_ar[0]/20;
    		trasforma.ga = 100;
    		trasforma.gb += diff_ar[1]/20;
    		trasforma.ba = 100;
    		trasforma.bb += diff_ar[2]/20;
    		colore.setTransform(trasforma);
    		count++;
    	}
    }
    sul frame:

    codice:
    function getColor(clip){
    	myColor = new Color(eval("clip"));
    	col = myColor.getTransform();
    	return([col.rb,col.gb,col.bb]);
    }

    Ho provato a spostare il blocco dell'evento mouseDown in un pulsante (adattandolo all'evento on (release), ovviamente) inserendo i nuovi percorsi per le variabili ma non va.

    Vi prego in ginocchio sui ceci .....è urgente.

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    - dai al movieclip un nome di istanza, ad esempio "mc"
    - al movieclip associ questo script:

    codice:
    onClipEvent (load) {
    	colore = new Color(this);
    	trasforma = new Object();
    	trasforma = {rb:100, gb:100, bb:255};
    	colore.setTransform(trasforma);
    	col_ar = new Array();
    	count = 0;
    	function changeColor()
    	{
    		col_ar = _root.getColor(this);
    		rb = random(255);
    		gb = random(255);
    		bb = random(255);
    		new_ar = new Array(rb, gb, bb);
    		diff_ar = new Array((new_ar[0]-col_ar[0]), (new_ar[1]-col_ar[1]), (new_ar[2]-col_ar[2]));
    		cambia = true;
    		count = 0;
    		trasforma.rb = col_ar[0];
    		trasforma.gb = col_ar[1];
    		trasforma.bb = col_ar[2];
    	}
    }
    onClipEvent (enterFrame) {
    	if (cambia && (count<20)) {
    		trasforma.ra = 100;
    		trasforma.rb += diff_ar[0]/20;
    		trasforma.ga = 100;
    		trasforma.gb += diff_ar[1]/20;
    		trasforma.ba = 100;
    		trasforma.bb += diff_ar[2]/20;
    		colore.setTransform(trasforma);
    		count++;
    	}
    }
    - nel frame lasci quello che c'era prima
    - al pulsante associ:

    codice:
    on(press){
    	mc.changeColor()
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    477
    Grazie Negatyve....finalmente qualcuno che ha risposto

  4. #4

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    477
    Scusami Negatyve ma ho un altro problema che mi sta facendo impazzire!!
    Perchè se cambio tutti i valori (rb, gb, bb) in (ra,ga,ba) non funziona?
    Mi sembra di non dimenticare niente, cambio i valori anche nella funzione del frame e nell'onEnterFrame sul clip!
    Ti posto il codice che ho modificato:

    codice:
    onClipEvent (load) {
    	colore = new Color(this);
    	trasforma = new Object();
    	trasforma = {ra:100, ga:100, ba:100};
    	colore.setTransform(trasforma);
    	col_ar = new Array();
    	count = 0;
    	function changeColor() {
    		col_ar = _root.getColor(this);
    		ra = random(100);
    		ga = random(100);
    		ba = random(100);
    		new_ar = new Array(ra, ga, ba);
    		diff_ar = new Array((new_ar[0]-col_ar[0]), (new_ar[1]-col_ar[1]), (new_ar[2]-col_ar[2]));
    		cambia = true;
    		count = 0;
    		trasforma.ra = col_ar[0];
    		trasforma.ga = col_ar[1];
    		trasforma.ba = col_ar[2];
    	}
    }
    onClipEvent (enterFrame) {
    	if (cambia && (count<20)) {
    		trasforma.ra += diff_ar[0]/20;
    		trasforma.rb = 100;
    		trasforma.ga += diff_ar[1]/20;
    		trasforma.gb = 100;
    		trasforma.ba += diff_ar[2]/20;
    		trasforma.bb = 100;
    		colore.setTransform(trasforma);
    		count++;
    	}
    }
    sul frame:
    codice:
    function getColor(clip) {
    	myColor = new Color(eval("clip"));
    	col = myColor.getTransform();
    	return ([col.ra, col.ga, col.ba]);
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    477
    up

  7. #7
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Sono nomi predefiniti dell'oggetto transform, non puoi cambiarli..

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    477
    Ma come? Stando alla guida di Flash "rb" indica l'offset del rosso e "ra" ne indica la percentuale.
    Io ho provato cambiando i parametri come dicevo prima e mi riesce, ma solo la prima volta che clicco sul bottone.
    Puoi controllare anche tu se è possibile?

  9. #9
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Non ho mica capito, cosa vuoi cambiare? Il codice associato al movieclip non va toccato, al massimo puoi cambiare quel:

    count<20

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    477
    Prova a digitare setTransform nella finestra delle azioni, poi evidenzialo e clicca sul libro con il punto di domanda. Lì potrai vedere che anche "ra" è un parametro dell'oggetto setTransform e che quindi può essere variato esattamente come "rb". Così vale per "ga" e "ba".

    Vorrei cambiare le percentuali dei colori e non l'offset perchè ho la necessità virare una fotografia. Virando le percentuali (e non gli offset) mi mantiene meglio le ombre presenti nella foto. Sembra una stupidata ma fa la differenza, ho provato.

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.