public function ColourTable(){ colourTable=new Array(); var cnt:Number=-1; var col:Number; var r:int; var g:int; var b:int; var offset:Number=3.1415;//To avoid /4 for each pixel every frame, we just make the colour table 4 times as big while(++cnt!=256*4){ r = 128 + 128 * Math.sin(offset * cnt / 32); g = 128 + 128 * Math.sin(offset * cnt / 64); b = 128 + 128 * Math.sin(offset * cnt / 128); col=(r << 16)+(g << 8)+b; colourTable.push(col); colourTable.push(col); colourTable.push(col); colourTable.push(col); } }
activePixelsStorage=new Array(); var pixelObj:Pixels; var j:int=-1; var k:int; while(++j!=120){ k=-1; while(++k!=120){ pixelObj=new Pixels(new Point(j,k),colourTable); activePixelsStorage.push(pixelObj); } }
public class Pixels{//---------------------------------------------------------------------------------------// Properties//--------------------------------------------------------------------------------------- private var xPos:int; private var yPos:int; private var cX:Number; private var cY:Number; private var jointDist:Number; private var offset:int; private var cT:Array; //---------------------------------------------------------------------------------------//Constructor//--------------------------------------------------------------------------------------- public function Pixels(pos:Point,colourTableArg:Array):void{ cX=xPos=pos.x; cY=yPos=pos.y; var xDist:int=120-cX; //Distance from the bottom var yDist:int=120-cY; cT=colourTableArg; var distance:Number=Math.round((Math.sqrt((xDist*xDist)+(yDist*yDist))/2)); var distX:Number=256 * Math.sin(distance/8); var distY:Number=256 * Math.cos(distance/8); jointDist=distX+distY; } //---------------------------------------------------------------------------------------//Public//--------------------------------------------------------------------------------------- public function toString():String { return "Pixels"; } //--------------------------------------------------------------------------------------- public function pixelmainloop(x:Number,y:Number,plotbm:BitmapData):void{ offset = (Math.cos((xPos+x)*0.0525) + Math.sin((yPos+y)*0.0255))*256 + jointDist; if(offset<0){ offset=(offset ^ -1) + 1; } plotbm.setPixel(xPos,yPos,cT[offset]); } }
sinOffset++; var radian:Number = sinOffset/60; paletteShiftX = 128-Math.sin(radian)*255; paletteShiftY = 128-Math.cos(radian)*255; plotbm.lock(); var pixelObj:Pixels; for each(pixelObj in activePixelsStorage){ pixelObj.pixelmainloop(paletteShiftX,paletteShiftY,plotbm); } plotbm.unlock(); if(plotbm==bm1){ plotbm=bm2; } else { plotbm=bm1; } bmData1.bitmapData=plotbm;
Powered by: newtelligence dasBlog 1.9.6264.0
Disclaimer The opinions expressed herein are our personal opinions and do not represent our customer's view in anyway.
© Copyright 2010, gaming your way
E-mail