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

Discussione: set rgb continuo

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,628

    set rgb continuo

    Avrei creato un clip di sfondo istanziato appunto "sfondo".
    Ho creato poi un clip istanziato"leve" dove all'interno ho inserito 3 leve R--G--B che hanno possibilità di drag in senso _y da zero a 255.

    Nel primo fotogramma della linea temporale ho scritto:

    _root.onEnterFrame = function() {
    R = leve.uno._y;
    G = leve.due._y;
    B = leve.tre._y;
    colore_stringa = R.toString(16)+G.toString(16)+B.toString(16);
    colore = parseInt(colore_stringa,16);
    prova = new Color(sfondo);
    prova.setRGB(colore);

    }

    Purtroppo però se io ad esempio spingo la sola leva R del rosso al massimo questa si da il valore 255 alla variabile R ( lo vedo facendo trace(r); ma vedo anche (facendo trace(colore) che non assume un valore FF0000 facendo in modo che il mio sfondo diventi rosso puro...

    Qualcuno sa come devo impostare questa cosa?

    Se scrivo sfondo.setRGB(0xFF0000) allora si che il mio sfondo diventa rosso, ma purtroppo questo è un valore che non ha possibilità di variare....

  2. #2
    io farei così:

    creo un clip a forma di cerchio 10 x 10 lo duplico 3 volte e lo posiziono in x=10 e rispettivamente in Y=20, Y=40, Y=60
    istanzio i tre clip come "R", "G", "B"

    creo un clip rettangolo istanziato bgcolor,

    e poi sulla prima frame


    codice:
    myColor = new Color(bgcolor);
    myColorTransform = new Object();
    RR=0
    GG=0
    BB=0
    
    function controll(nome){
    this[nome].onEnterFrame=function(){
    	if(this.stato){
    		this.startDrag(false,10,this._y,265,this._y)
    		_root[nome+nome]=(this._x-10)
    		_root.myColorTransform = { ra: '0', rb: _root.RR, ga: '0', gb: _root.GG, ba: '0', bb: _root.BB, aa: '100', ab: '0'};
            _root.myColor.setTransform(_root.myColorTransform);
    	}else{
    		stopDrag()
    		delete this.onEnterFrame
    	}
    }
    }
    
    MovieClip.prototype.dragga=function(){
    this.onPress=function(){
    	this.stato=true
    	controll(this._name)
    }
    this.onRelease=this.onReleaseOutside=function(){
    	this.stato=false
    }
    }
    
    R.dragga()
    G.dragga()
    B.dragga()
    Ciao

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,628

    Re:

    Grazie ma non riesco a seguire il tuo script purtroppo....

    Il fatto + che dovrebbe funzionare anche il mio sistema è solo questione di come si trasforma sto benmedetto numero esadecimale....

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,628

    Re:

    Non capisco però.....
    Se la riga di comnado:

    colore_stringa = R.toString(16)+G.toString(16)+B.toString(16);

    deve trasformare i valori di r-g-b in esadecimali, se io ho ad esempio la leva del rosso al massimo e le altre 2 a zero avrei il valore pari a:

    R=255
    G=0
    B=0

    Se esprimo in esadecimale, tramite la riga di comando sopra, questi valori dovrei avere:

    ff0000

    Invece lui mi restituisce ff00....
    Allora mi chiedo a che cavolo serve la conversione a base 16 imposta nella riga di comando se poi questa non viene fatta in modo corretto.

  6. #6
    conversione RGB to HEX

    numero = R = 255
    numero1 = G = 0
    numero2 = B = 0

    attenzione al grassetto in fondo


    codice:
    function RGBtoHEX (numero, numero1, numero2) {
       R_primo=Math.floor(numero/16)+1
       R_secondo=numero-(Math.floor(numero/16)*16)+1
       Rhex1 = substring("0123456789ABCDEF", R_primo,1)
       Rhex2 = substring("0123456789ABCDEF", R_secondo,1)
       Rhex= Rhex1+Rhex2
       G_primo=Math.floor(numero1/16)+1
       G_secondo=numero1-(Math.floor(numero1/16)*16)+1
       Ghex1 = substring("0123456789ABCDEF", G_primo,1)
       Ghex2 = substring("0123456789ABCDEF", G_secondo,1)
       Ghex= Ghex1+Ghex2
       B_primo=Math.floor(numero2/16)+1
       B_secondo=numero2-(Math.floor(numero2/16)*16)+1
       Bhex1 = substring("0123456789ABCDEF", B_primo,1)
       Bhex2 = substring("0123456789ABCDEF", B_secondo,1)
       Bhex= Bhex1+Bhex2
       hex2="0x"+Rhex+Ghex+Bhex 
    
    }

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,628

    Re:

    Lasciamo perdere.....
    Io continuo a chiedermi perchè se il comnado toString(16) vuol dire convertire un valore numerico a base 10 in numero a base 16 lui parte con i primi 16 valori formandoli con un nsolo numero anzichè 2????
    Se io ho il valore 0 a base dieci lui DEVE trasformarmelo in 00 e non in 0....
    Se ho il valore 10 a base 10 lui deve scrivermi 0A e non A...altrimenti che conversione a base 16 del cacchio è ????

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,628

    Re:

    Ho provato il tuo secondo script in questo modo ma non funge:


    _root.onEnterFrame = function() {
    numero = leve.uno._y;
    numero1 = leve.due._y;
    numero2 = leve.tre._y;
    function RGBtoHEX(numero, numero1, numero2) {
    R_primo = Math.floor(numero/16)+1;
    R_secondo = numero-(Math.floor(numero/16)*16)+1;
    Rhex1 = substring("0123456789ABCDEF", R_primo, 1);
    Rhex2 = substring("0123456789ABCDEF", R_secondo, 1);
    Rhex = Rhex1+Rhex2;
    G_primo = Math.floor(numero1/16)+1;
    G_secondo = numero1-(Math.floor(numero1/16)*16)+1;
    Ghex1 = substring("0123456789ABCDEF", G_primo, 1);
    Ghex2 = substring("0123456789ABCDEF", G_secondo, 1);
    Ghex = Ghex1+Ghex2;
    B_primo = Math.floor(numero2/16)+1;
    B_secondo = numero2-(Math.floor(numero2/16)*16)+1;
    Bhex1 = substring("0123456789ABCDEF", B_primo, 1);
    Bhex2 = substring("0123456789ABCDEF", B_secondo, 1);
    Bhex = Bhex1+Bhex2;
    hex2 = "0x"+Rhex+Ghex+Bhex;
    }
    pippo=new Color(sfondo);
    pippo.setRGB(hex2);
    trace(R-primo);
    };

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,628

    Re:

    Ci sono riuscito....ma con uno script lungo quanto la bibbia:

    _root.onEnterFrame = function() {
    R = leve.uno._y;
    G = leve.due._y;
    B = leve.tre._y;
    //Compensazione del rosso
    stringa_r = R.toString(16);
    if (stringa_r == "1e" || stringa_r == "2e" || stringa_r == "3e" || stringa_r == "4e" || stringa_r == "5e" || stringa_r == "6e" || stringa_r == "7e" || stringa_r == "8e" || stringa_r == "9e") {
    stringa_r = stringa_r;
    } else if (stringa_r == 0 || stringa_r == 1 || stringa_r == 2 || stringa_r == 3 || stringa_r == 4 || stringa_r == 5 || stringa_r == 6 || stringa_r == 7 || stringa_r == 8 || stringa_r == 9 || stringa_r == "a" || stringa_r == "b" || stringa_r == "c" || stringa_r == "d" || stringa_r == "e" || stringa_r == "f") {
    stringa_r = "0"+stringa_r;
    }
    //Compensazione del verde
    stringa_g = G.toString(16);
    if (stringa_g == "1e" || stringa_g == "2e" || stringa_g == "3e" || stringa_g == "4e" || stringa_g == "5e" || stringa_g == "6e" || stringa_g == "7e" || stringa_g == "8e" || stringa_g == "9e") {
    stringa_g = stringa_g;
    } else if (stringa_g == 0 || stringa_g == 1 || stringa_g == 2 || stringa_g == 3 || stringa_g == 4 || stringa_g == 5 || stringa_g == 6 || stringa_g == 7 || stringa_g == 8 || stringa_g == 9 || stringa_g == "a" || stringa_g == "b" || stringa_g == "c" || stringa_g == "d" || stringa_g == "e" || stringa_g == "f") {
    stringa_g = "0"+stringa_g;
    }
    //Compensazione del blu
    stringa_b = B.toString(16);
    if (stringa_b == "1e" || stringa_b == "2e" || stringa_b == "3e" || stringa_b == "4e" || stringa_b == "5e" || stringa_b == "6e" || stringa_b == "7e" || stringa_b == "8e" || stringa_b == "9e") {
    stringa_g = stringa_g;
    } else if (stringa_b == 0 || stringa_b == 1 || stringa_b == 2 || stringa_b == 3 || stringa_b == 4 || stringa_b == 5 || stringa_b == 6 || stringa_b == 7 || stringa_b == 8 || stringa_b == 9 || stringa_b == "a" || stringa_b == "b" || stringa_b == "c" || stringa_b == "d" || stringa_b == "e" || stringa_b == "f") {
    stringa_b = "0"+stringa_b;
    }
    colore_finale = "0x"+stringa_r+stringa_g+stringa_b;
    colore = new Color(sfondo);
    colore.setRGB(colore_finale);
    trace(colore_finale);
    };


    La cosa curiosissima e che vorrei che qualcuno fosse in grado di spiegarmela è che per ogni canale colore avevo creato la sola seconda riga di condizione ( quella dopo ogni else if) in modo che mi mettesse sto cacchio di zero davanti ai primi numeri.
    Lui lo faceva...ma quando arrivava, sia per il canale del rosso che del verde che del blu, ad un valore pari a 1e oppure 2e e così via fino a 9e lui lo zero davanti me lo metteva lo stesso....anche se quella condizione non diceva di mettermelo....
    E allora, tanto per allungare ancora un po' mi son dovuto creare un'altra riga di if per ogni canale per dirgli di non metterlo....ma si può!?!?!?!?

  10. #10

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.