既然是基礎(chǔ)篇,就可以白說一堆大家都知道的廢話,來浪費(fèi)大家的時(shí)間,那簡直是一定的。但是想想打字挺累得,還是算了吧,那些大家都差不多都知道的話我就不寫了,反正在網(wǎng)上也很好找到。故以下作者刪去50000字……
廢話少說,咱們現(xiàn)在差不多都是用RGB數(shù)值描述一個(gè)東西的顏色,RGB,red、green、blue顧名思義,紅綠藍(lán)嘛。這三個(gè)顏色可以說互相之間沒有任何聯(lián)系,但是計(jì)算機(jī)為了儲(chǔ)存的方便,變成一個(gè)6位16進(jìn)制整數(shù)儲(chǔ)存,很多麻煩就是由此而產(chǎn)生。
我們先來看一個(gè)我做的物理教學(xué)課件,加深一下對(duì)RGB顏色的感性認(rèn)識(shí)。
頁面:點(diǎn)這兒參觀 源碼(6K): colortest4.zip
默認(rèn)是紅綠藍(lán)都打到最強(qiáng)255,這實(shí)際上就是白光。大家可以分別調(diào)節(jié)3個(gè)顏色的燈光強(qiáng)度,看一下白、紅、綠、藍(lán)、黑這5個(gè)代表性的小球顏色的變化。呵呵,怎么樣,很過癮吧。
下面我說一下這個(gè)課件是怎么做的,核心的action代碼是顏色的計(jì)算和設(shè)置部分,下面的拉條做的很不好,半年前做的,現(xiàn)在懶得改了。
如果我們想一個(gè)物體的顏色為#996633,代碼很簡單: mycolor = new Color(themc); mycolor.setRGB(0x996633);
如果僅僅知道各個(gè)顏色的大小,就是紅色為153,綠102,藍(lán)51: mycolor = new Color(themc); r=153; g=102; b=51; mycolor.setRGB(r<< 16 | g << 8 | b);
我覺得這個(gè)算法還是比較巧妙的,通過“左移”和“或”兩個(gè)運(yùn)算得到顏色的RGB值大小。 下面看看我課件里的5個(gè)小球,白球是反射任何光的。所以顏色就是: onClipEvent (load) { mycolor = new Color(this); } onClipEvent (enterFrame) { mycolor.setRGB(_root.r << 16 | _root.g << 8 | _root.b); }
紅球之反射紅光,只需把顏色設(shè)置改為mycolor.setRGB(_root.r << 16 |0); 同理,綠球:mycolor.setRGB(_root.g << 8 |0); 藍(lán)球:mycolor.setRGB(_root.b); 黑球什么顏色的光都不反射,就是:mycolor.setRGB(0x000000); 簡單吧!
你如果說,一個(gè)對(duì)紅光反射75%,綠光50%,藍(lán)光25%的物體,什么顏色, mycolor.setRGB(Math.floor(_root.r*0.75) << 16 | Math.floor(_root.g*0.5) << 8 | (_root.b*0.25));X 不要忘記Math.floor()啊,我們要的可是整數(shù),不然出錯(cuò)的話,flash自動(dòng)設(shè)為黑色。
是不是很簡單啊,大家可能開始看到我做的flash的時(shí)候,很驚訝,看到源碼,又太簡單。但是我為了想到這個(gè)制作思路,可是畫了很多很多的時(shí)間啊。教程寫的不好,希望對(duì)大家能有一點(diǎn)點(diǎn)用處。
今天的基礎(chǔ)教程主要是介紹一下RGB的基本知識(shí),和flash中RGB設(shè)置的基本方法。以后我會(huì)再寫一些擴(kuò)展方面的內(nèi)容,不如怎么設(shè)置比較漂亮隨機(jī)顏色,怎么計(jì)算顏色漸變,怎么模擬彩虹……請(qǐng)大家拭目以待!:cool:
出處:藍(lán)色理想
責(zé)任編輯:藍(lán)色
上一頁 下一頁 RGB顏色action自定義教程 — 隨機(jī)顏色篇
◎進(jìn)入論壇Flash專欄版塊參加討論
|