
Originally Posted by
Ririn Indah

kalo melalui script pada flash,,,bearti harus menghitung setiap nilai rgb yg di maksudkan u/ hasil warna dr pancampurannya?
Betul tiap warna harus dipisahkan dulu R-G-B nya

Originally Posted by
Ririn Indah
kalo diatas kan om contoh in dg cara mngatur scrol..
saya maksudkan kalo mencampur 2 warna berbeda pada 1 tempat objek mungkin dengan cara memindahkannya dg di drag dr warna yg dipilih ketempat u/ dicampurkan yg jadi satu itu bagaimana om ??
Berikut script dari AS1 saya convert menjadi AS3
source:mixing color
Code:
function MixRGBColor(color1:uint, color2:uint):uint{
///////////////////////////////////////////////////////////////////////////////
/*
English :
We are melting two colors (color1 and color2)
Input parameters :
color1:uint
color2:uint
Output parameter :
colorMixRGB:uint
(c) Cheesecom 2002
**converted to AS3**
*/
///////////////////////////////////////////////////////////////////////////////
/**
* Split color to RGB
*/
var clR1:uint = (( color1 >> 16 ) & 0xFF);
var clG1:uint = (( color1 >> 8 ) & 0xFF);
var clB1:uint = ( color1 & 0xFF );
var clR2:uint = (( color2 >> 16 ) & 0xFF);
var clG2:uint = (( color2 >> 8 ) & 0xFF);
var clB2:uint = ( color2 & 0xFF );
/*
English :
Test if both color are primary colors in CMY mode.
*/
var testCMY:Boolean = (((clR1 == 255 && clG1 == 255 && clB1== 0) ||
(clR1 == 255 && clG1 == 0 && clB1== 255) ||
(clR1 == 0 && clG1 == 255 && clB1== 255)) &&
((clR2 == 255 && clG2 == 255 && clB2== 0) ||
(clR2 == 255 && clG2 == 0 && clB2== 255) ||
(clR2 == 0 && clG2 == 255 && clB2== 255)));
trace("CMY = " , testCMY);
/*
English :
Test if both colors are primary colors in RGB mode.
*/
var testRGB:Boolean = (((clR1 == 255 && clG1 == 0 && clB1== 0) ||
(clR1 == 0 && clG1 == 255 && clB1== 0) ||
(clR1 == 0 && clG1 == 0 && clB1== 255)) &&
((clR2 == 255 && clG2 == 0 && clB2== 0) ||
(clR2 == 0 && clG2 == 255 && clB2== 0) ||
(clR2 == 0 && clG2 == 0 && clB2== 255)));
trace("RGB = ", testRGB);
/*
* New color RGB
*/
var colorR:uint
var colorG:uint
var colorB:uint
/*
English :
test if both colors are the same.
*/
var sameColor:Boolean = (clR1==clR2 && clG1==clG2 && clB1==clB2);
if (sameColor){
/*
English :
Both colors are the same, we keep only one.
*/
colorR = clR1;
colorG = clG1;
colorB = clB1;
//trace("2 fois la même couleur !!!")
}else if (testRGB && !testCMY){
/*
English :
They are both RGB primary colors. We use a XOR operator to calculate the color mix.
*/
colorR = clR1 ^ clR2;
//trace(colorr);
colorG = clG1 ^ clG2;
//trace(colorg);
colorB = clB1 ^ clB2;
//trace(colorb);
//trace("dans la boucle RGB");
} else if (testCMY && !testRGB){
/*
English :
They are both CMY primary colors. We use a logical AND to calculate the color mix.
*/
colorB = clR1 && clR2;
//trace(colorr);
colorB = clG1 && clG2;
//trace(colorg);
colorB = clB1 && clB2;
//trace(colorb);
//trace("dans la boucle CMY");
}else{
/*
English :
They are not both primary colors. We calculate the average between each color.
*/
colorR = Math.floor((clR1+clR2)/2);
trace(colorR);
colorG = Math.floor((clG1+clG2)/2);
trace(colorG);
colorB = Math.floor((clB1+clB2)/2);
trace(colorB);
}
return ( ( colorR<< 16 ) | ( colorG << 8 ) | colorB );
} Demo
http://sites.google.com/site/irzali/...lor-mixing.swf
source file (minimal CS4):
http://sites.google.com/site/irzali/...lor-mixing.fla
Edit:
Script ditersebut masih ada bugsnya, misalnya kombinasi dari biru dan kuning ternyata menghasilnya uint untuk warna abu-abu
Peringatan!
kalo bikin thread cukup satu cari sub-topic yang kira-kira berhubungan dengan subjectnya, jangan bikin banyak!
Bookmarks