{"id":45,"date":"2007-05-14T13:33:44","date_gmt":"2007-05-14T18:33:44","guid":{"rendered":"http:\/\/www.pixelwit.com\/blog\/2007\/05\/14\/hexadecimal-color-fading\/"},"modified":"2009-08-13T16:39:56","modified_gmt":"2009-08-13T21:39:56","slug":"hexadecimal-color-fading","status":"publish","type":"post","link":"https:\/\/www.pixelwit.com\/blog\/2007\/05\/14\/hexadecimal-color-fading\/","title":{"rendered":"Hexadecimal Color Fading"},"content":{"rendered":"<p>A while ago, I wrote a <a title=\"Pixelwit Color Fading Tutorial\" href=\"https:\/\/www.pixelwit.com\/temp\/colorfadetutorial\/home.html\">Color Fading tutorial<\/a> for <a title=\"Tutorial at ActionScript.org\" href=\"http:\/\/www.actionscript.org\/resources\/articles\/162\/1\/Color-fade\/Page1.html\"> ActionScript.org<\/a> which provided nearly all the functions you&#8217;d ever want for fading colors.  Did you notice that I said &#8220;nearly&#8221;?  Well, today I&#8217;ve added yet another weapon to my color-fading code arsenal called &#8220;fadeHex&#8221;. The name probably won&#8217;t put fear in the hearts of fellow code warriors but it&#8217;s a powerful tool none the less.  In essence, it lets you specify two colors, then creates a color gradient from the first color to the second and lets you choose a color at any point on that gradient.<!--more--> For example, &#8220;fadeHex(0x000000, 0xFFFFFF, .25)&#8221; will return a dark gray color (75% black, 25% white) while &#8220;fadeHex(0xFF0000, 0x0000FF, .5)&#8221; returns a purple color (0x7F007F).  So without further ado, here&#8217;s the code:<\/p>\n<div class=\"codecolorer-container actionscript default\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><div class=\"actionscript codecolorer\"><span class=\"co1\">\/\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> fadeHex <span class=\"br0\">&#40;<\/span>hex, hex2, ratio<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw2\">var<\/span> r = hex <span class=\"sy0\">&gt;&gt;<\/span> <span class=\"nu0\">16<\/span>;<br \/>\n&nbsp; &nbsp; <span class=\"kw2\">var<\/span> g = hex <span class=\"sy0\">&gt;&gt;<\/span> <span class=\"nu0\">8<\/span> <span class=\"sy0\">&amp;<\/span> 0xFF;<br \/>\n&nbsp; &nbsp; <span class=\"kw2\">var<\/span> b = hex <span class=\"sy0\">&amp;<\/span> 0xFF;<br \/>\n&nbsp; &nbsp; r += <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>hex2 <span class=\"sy0\">&gt;&gt;<\/span> <span class=\"nu0\">16<\/span><span class=\"br0\">&#41;<\/span>-r<span class=\"br0\">&#41;<\/span><span class=\"sy0\">*<\/span>ratio;<br \/>\n&nbsp; &nbsp; g += <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>hex2 <span class=\"sy0\">&gt;&gt;<\/span> <span class=\"nu0\">8<\/span> <span class=\"sy0\">&amp;<\/span> 0xFF<span class=\"br0\">&#41;<\/span>-g<span class=\"br0\">&#41;<\/span><span class=\"sy0\">*<\/span>ratio;<br \/>\n&nbsp; &nbsp; b += <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>hex2 <span class=\"sy0\">&amp;<\/span> 0xFF<span class=\"br0\">&#41;<\/span>-b<span class=\"br0\">&#41;<\/span><span class=\"sy0\">*<\/span>ratio;<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span><span class=\"br0\">&#40;<\/span>r<span class=\"sy0\">&lt;&lt;<\/span><span class=\"nu0\">16<\/span> <span class=\"sy0\">|<\/span> g<span class=\"sy0\">&lt;&lt;<\/span><span class=\"nu0\">8<\/span> <span class=\"sy0\">|<\/span> b<span class=\"br0\">&#41;<\/span>;<br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"co1\">\/\/<\/span><\/div><\/div>\n<p>Here&#8217;s some ActionScript code showing a fairly simple implementation of the &#8220;fadeHex&#8221; color fade script:<\/p>\n<div class=\"codecolorer-container actionscript default\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><div class=\"actionscript codecolorer\"><span class=\"co1\">\/\/<\/span><br \/>\n<span class=\"kw2\">var<\/span> startHex = 0xFFFF00;<span class=\"co1\">\/\/ Yellow.<\/span><br \/>\n<span class=\"kw2\">var<\/span> endHex = 0xFF0000;<span class=\"co1\">\/\/ Red.<\/span><br \/>\n<span class=\"co1\">\/\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> fadeHex <span class=\"br0\">&#40;<\/span>hex, hex2, ratio<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw2\">var<\/span> r = hex <span class=\"sy0\">&gt;&gt;<\/span> <span class=\"nu0\">16<\/span>;<br \/>\n&nbsp; &nbsp; <span class=\"kw2\">var<\/span> g = hex <span class=\"sy0\">&gt;&gt;<\/span> <span class=\"nu0\">8<\/span> <span class=\"sy0\">&amp;<\/span> 0xFF;<br \/>\n&nbsp; &nbsp; <span class=\"kw2\">var<\/span> b = hex <span class=\"sy0\">&amp;<\/span> 0xFF;<br \/>\n&nbsp; &nbsp; r += <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>hex2 <span class=\"sy0\">&gt;&gt;<\/span> <span class=\"nu0\">16<\/span><span class=\"br0\">&#41;<\/span>-r<span class=\"br0\">&#41;<\/span><span class=\"sy0\">*<\/span>ratio;<br \/>\n&nbsp; &nbsp; g += <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>hex2 <span class=\"sy0\">&gt;&gt;<\/span> <span class=\"nu0\">8<\/span> <span class=\"sy0\">&amp;<\/span> 0xFF<span class=\"br0\">&#41;<\/span>-g<span class=\"br0\">&#41;<\/span><span class=\"sy0\">*<\/span>ratio;<br \/>\n&nbsp; &nbsp; b += <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>hex2 <span class=\"sy0\">&amp;<\/span> 0xFF<span class=\"br0\">&#41;<\/span>-b<span class=\"br0\">&#41;<\/span><span class=\"sy0\">*<\/span>ratio;<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span><span class=\"br0\">&#40;<\/span>r<span class=\"sy0\">&lt;&lt;<\/span><span class=\"nu0\">16<\/span> <span class=\"sy0\">|<\/span> g<span class=\"sy0\">&lt;&lt;<\/span><span class=\"nu0\">8<\/span> <span class=\"sy0\">|<\/span> b<span class=\"br0\">&#41;<\/span>;<br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"co1\">\/\/<\/span><br \/>\n<span class=\"kw2\">function<\/span> drawSquare <span class=\"br0\">&#40;<\/span>x, y, <span class=\"kw3\">color<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw3\">beginFill<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">color<\/span><span class=\"br0\">&#41;<\/span>;<br \/>\n&nbsp; &nbsp; <span class=\"kw3\">moveTo<\/span><span class=\"br0\">&#40;<\/span>x, y<span class=\"br0\">&#41;<\/span>;<br \/>\n&nbsp; &nbsp; <span class=\"kw3\">lineTo<\/span><span class=\"br0\">&#40;<\/span>x+<span class=\"nu0\">50<\/span>, y<span class=\"br0\">&#41;<\/span>;<br \/>\n&nbsp; &nbsp; <span class=\"kw3\">lineTo<\/span><span class=\"br0\">&#40;<\/span>x+<span class=\"nu0\">50<\/span>, y+<span class=\"nu0\">50<\/span><span class=\"br0\">&#41;<\/span>;<br \/>\n&nbsp; &nbsp; <span class=\"kw3\">lineTo<\/span><span class=\"br0\">&#40;<\/span>x, y+<span class=\"nu0\">50<\/span><span class=\"br0\">&#41;<\/span>;<br \/>\n&nbsp; &nbsp; <span class=\"kw3\">lineTo<\/span><span class=\"br0\">&#40;<\/span>x, y<span class=\"br0\">&#41;<\/span>;<br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"co1\">\/\/<\/span><br \/>\n<span class=\"kw1\">for<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">var<\/span> i=<span class=\"nu0\">0<\/span>; i<span class=\"sy0\">&lt;<\/span>=<span class=\"nu0\">9<\/span>; i++<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw2\">var<\/span> ratio = i<span class=\"sy0\">\/<\/span><span class=\"nu0\">9<\/span>;<br \/>\n&nbsp; &nbsp; <span class=\"kw2\">var<\/span> x = i<span class=\"sy0\">*<\/span><span class=\"nu0\">50<\/span>;<br \/>\n&nbsp; &nbsp; <span class=\"kw2\">var<\/span> y = i<span class=\"sy0\">*<\/span><span class=\"nu0\">2<\/span>;<br \/>\n&nbsp; &nbsp; <span class=\"kw2\">var<\/span> nowColor = fadeHex<span class=\"br0\">&#40;<\/span>startHex, endHex, ratio<span class=\"br0\">&#41;<\/span>;<br \/>\n&nbsp; &nbsp; drawSquare<span class=\"br0\">&#40;<\/span>x, y, nowColor<span class=\"br0\">&#41;<\/span>;<br \/>\n&nbsp; &nbsp; <span class=\"kw3\">trace<\/span><span class=\"br0\">&#40;<\/span>nowColor.<span class=\"kw3\">toString<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">16<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span>;<br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"co1\">\/\/<\/span><\/div><\/div>\n<p>Here&#8217;s the SWF which was created with the above code:<br \/>\n\n<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t\t\tid=\"fm_colorfadehex_01_1332384593\"\n\t\t\tclass=\"flashmovie\"\n\t\t\twidth=\"500\"\n\t\t\theight=\"72\">\n\t<param name=\"movie\" value=\"\/blog\/wp-content\/uploads\/2007\/05\/colorfadehex_01.swf\" \/>\n\t<!--[if !IE]>-->\n\t<object\ttype=\"application\/x-shockwave-flash\"\n\t\t\tdata=\"\/blog\/wp-content\/uploads\/2007\/05\/colorfadehex_01.swf\"\n\t\t\tname=\"fm_colorfadehex_01_1332384593\"\n\t\t\twidth=\"500\"\n\t\t\theight=\"72\">\n\t<!--<![endif]-->\n\t\t\n\t<!--[if !IE]>-->\n\t<\/object>\n\t<!--<![endif]-->\n<\/object><\/p>\n<p>And finally, here's the text output from the trace commands:<\/p>\n<div class=\"codecolorer-container actionscript default\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><div class=\"actionscript codecolorer\">ffff00<br \/>\nffe200<br \/>\nffc600<br \/>\nffaa00<br \/>\nff8d00<br \/>\nff7100<br \/>\nff5500<br \/>\nff3800<br \/>\nff1c00<br \/>\nff0000<\/div><\/div>\n<p>I hope you find this color fading code as handy as I did.  If you'd like to read more about storing your color fades in an array you can read my <a title=\"Multiple Color Fading Tutorial\" href=\"https:\/\/www.pixelwit.com\/blog\/2008\/05\/color-fading-array\/\">Fading Multiple Colors Tutorial<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A great little ActionScript function to efficiently pick any color on the spectrum between two other hexadecimal colors.  For example: &#8220;var purple = fadeHex(0xFF0000, 0x0000FF, .5);&#8221;.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[8],"tags":[23,46,36,37],"class_list":["post-45","post","type-post","status-publish","format-standard","hentry","category-flash","tag-actionscript","tag-color","tag-swfs","tag-tutorial"],"_links":{"self":[{"href":"https:\/\/www.pixelwit.com\/blog\/wp-json\/wp\/v2\/posts\/45","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pixelwit.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pixelwit.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pixelwit.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pixelwit.com\/blog\/wp-json\/wp\/v2\/comments?post=45"}],"version-history":[{"count":0,"href":"https:\/\/www.pixelwit.com\/blog\/wp-json\/wp\/v2\/posts\/45\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.pixelwit.com\/blog\/wp-json\/wp\/v2\/media?parent=45"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pixelwit.com\/blog\/wp-json\/wp\/v2\/categories?post=45"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pixelwit.com\/blog\/wp-json\/wp\/v2\/tags?post=45"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}