PDA

Volledige versie bekijken : Vloeiende kleurovergangen


moflwm
%Europe/Berlin %578 %2005, 14:52
Hey,

ik heb wat zitten experimenteren met kleurovergangen en zo in AS... dit is het resultaat:


// functie om graden om te zetten in radialen
function degToRad(angle) {
return angle/180*Math.PI;
}

// graden -> kleur!
function degToRGB (angle) {
r = Math.round((Math.cos(degToRad(angle + 000))+1)/2*0xFF);
g = Math.round((Math.cos(degToRad(angle + 120))+1)/2*0xFF);
b = Math.round((Math.cos(degToRad(angle + 240))+1)/2*0xFF);
rgb = r << 16 | g << 8 | b;
return rgb;
}

Je werkt dus met een soort kleurencirkel (0° = rood, 120° = groen, 240° = blauw) en de kleur die overeenkomt met een hoek wordt berekend dmv de cosinus van die hoek. Voorbeeld:


moveTo(0, 0);
for (x=0; x<500; x++) {
color = degToRGB(x%360);
lineStyle(10, color, 100);
lineTo(x, 0);
}

Dat is niet erg flexibel, dus heb ik een uitgebreidere versie gemaakt:


function degToRGB (angle, args) {
rMin = (args.rMin == undefined) ? 0 : args.rMin;
gMin = (args.gMin == undefined) ? 0 : args.gMin;
bMin = (args.bMin == undefined) ? 0 : args.bMin;
rDiff = (args.rMax == undefined or args.rMax < rMin) ? 255-rMin : args.rMax-rMin;
gDiff = (args.gMax == undefined or args.gMax < gMin) ? 255-gMin : args.gMax-gMin;
bDiff = (args.bMax == undefined or args.bMax < bMin) ? 255-bMin : args.bMax-bMin;
rAngle = (args.rAngle == undefined) ? 000 : args.rAngle;
gAngle = (args.gAngle == undefined) ? 120 : args.gAngle;
bAngle = (args.bAngle == undefined) ? 240 : args.bAngle;
r = Math.round((Math.cos(degToRad(angle + rAngle))+1)/2*rDiff)+rMin;
g = Math.round((Math.cos(degToRad(angle + gAngle))+1)/2*gDiff)+gMin;
b = Math.round((Math.cos(degToRad(angle + bAngle))+1)/2*bDiff)+bMin;
rgb = r << 16 | g << 8 | b;
return rgb;
}

Zo kun je de hoeken waarop de basiskleuren zich bevinden aanpassen (rAngle, bAngle, gAngle), en hun minimum- en maximumwaarden (rMin, rMax, gMin, gMax, bMin, bMax). Twee voorbeelden hiervan:


args = {rMin: 0x99, gMax: 0x99, bMin: 0xCC, bMax: 0xCC};
moveTo(0, 0);
for (x=0; x<500; x++) {
color = degToRGB(x%360, args);
lineStyle(10, color, 100);
lineTo(x, 20);
}

args = {rAngle: 50, gAngle: 90, bAngle: 170};
moveTo(0, 0);
for (x=0; x<500; x++) {
color = degToRGB(x%360, args);
lineStyle(10, color, 100);
lineTo(x, 40);
}

Je kan het aan het werk zien op http://home.scarlet.be/~plinius1/kleurverandering-schuifjes.swf. (het is de bedoeling dat je die driehoekjes rechts verschuift om het effect ervan op de kleuren te bekijken :))

grz
yves

Roenes
%Europe/Berlin %587 %2005, 15:05
Alweer een GreenVille persoon erbij! Dat kan niet he! Strax krijgen we hier een invasie ;)

Anyway, ik zal later vandaag eens uitgebreid kijken naar je scriptjes en kijken of ik nog wat aan te merken heb. :)

Dauntless
%Europe/Berlin %587 %2005, 15:06
Go Yves! ;)

Zoals ik je al veel gezegd heb: leuk experimentje!!!!

behived
%Europe/Berlin %593 %2005, 15:14
super interessant!!

cevain
%Europe/Berlin %850 %2005, 21:24
Alweer een GreenVille persoon erbij! Dat kan niet he! Strax krijgen we hier een invasie ;)

Anyway, ik zal later vandaag eens uitgebreid kijken naar je scriptjes en kijken of ik nog wat aan te merken heb. :)
Alweer zegt 'ie dan, ******** een van de grondleggers.

En van dat script snap ik de ballen maar het 'lijkt' er professioneel uit te zien :cool: .

Flashingback
%Europe/Berlin %867 %2005, 21:49
toff dingetje al snap ik er ook niet alles van. Best wel kewl experimentje of ziet het er indrukwekkender uit dan het is ?

Roenes
%Europe/Berlin %883 %2005, 22:12
Alweer zegt 'ie dan, ******** een van de grondleggers.Ik bedoelde: weer 1 erbij opt forum ;)

Maar ik zag aan zijn echte naam dat hij voorheen ook geregeld op het forum kwam. Maar volgens mij onder een andere naam :)

Dauntless
%Europe/Berlin %885 %2005, 22:15
Ik bedoelde: weer 1 erbij opt forum ;)

Maar ik zag aan zijn echte naam dat hij voorheen ook geregeld op het forum kwam. Maar volgens mij onder een andere naam :)
Jup... Er staan nog wel wat items tussen de .fla's en ook wat in het ASD :).

Enuh, voorlopig komen er geen nieuwe GV'ers meer bij hoor :p

moflwm
%Europe/Berlin %478 %2005, 12:29
Maar ik zag aan zijn echte naam dat hij voorheen ook geregeld op het forum kwam. Maar volgens mij onder een andere naam :)
juist :) vroeger was mn nick "vogelbekdier", maar die was ik wat beu... ik moest me nog opnieuw registreren hier, maar door een chronisch tekort aan inspiratie heb ik mijn gebruikersnaam maar laten maken door een scriptje (geschreven in python... 6 willekeurige letters kiezen en aan elkaar plakken :cool: nu ik eraan denk, ik had het eigenlijk in AS moeten schrijven :))

toff dingetje al snap ik er ook niet alles van. Best wel kewl experimentje of ziet het er indrukwekkender uit dan het is ?
mjah.. ik was van plan om er ooit eens een uitgebreidere uitleg bij te schrijven... nog geen tijd/zin gehad :D als het ooit af raakt, post ik het hier :)

grz
yves

Fatty Owl
%Europe/Berlin %030 %2005, 01:43
vraagje, wat is greenville :o ik weet alleen dat veel mensen hier een signature hebben van greenville, meer niet

Dauntless
%Europe/Berlin %271 %2005, 07:30
vraagje, wat is greenville :o ik weet alleen dat veel mensen hier een signature hebben van greenville, meer niet
Meer is er ook nog niet bekend... :)

flashfreak
%Europe/Berlin %349 %2005, 09:22
FO, dat wil dus gwn zeggen dat de Greenville heren aandacht willen, he kijk eens wat mijn sig is, maar als je info vraagt bestaat het niet :p :p

TheSilentWitness
%Europe/Berlin %375 %2005, 10:00
Volges mij bedoeltie gewoon dat enkel de GreenVillers zelf weten waar ze mee bezig zijn:P

Tha Narie
%Europe/Berlin %407 %2005, 10:46
Kom op, beetje ontopic blijven heren!

Flasher
%Europe/Berlin %757 %2005, 19:10
toch nog een minpuntje:
'or' is echt zwaar flash 4
gebruik ||
zie ook de AS library--->Deprecated Language Elements

verder ziet het er heel goed uit!