Flex/AIR/AS3/Etc2009.11.17 02:20

요즘 블로그 하기가 힘든 관계로 간단한 포스팅 하나 하고 갑니다~ ㅎㅎ

Math.Random()은 0과 1사이의 더블형 난수를 발생시키는 함수입니다.

0 <= Math.Random() < 1

위에서 보시는바와 같이 0은 포함되지만 1은 포함되지 안습니다.

그럼 이걸 응용해서 어찌 랜덤색상을 구하게 만드는지 살펴 보겠습니다.

flex에서 사용되는 색상코드는 16진수 형태의 24비트 칼라 이기때문에 색상의 표현은

0xFFFFFF 을 10진수로 바꿔보면 16777215가 됩니다.

0xFFFFFF도 흰색이므로 색상에 포함시킨다고 하면 Math.Random() 함수에 16777216만 곱해주면 0과 16777216 사이의 랜덤 난수를 발생시킬 수 있습니다. 하지만 여기서 주의해야할 점은 Math.Random() 함수는 double형이기때문에 발생되는 난수를 정수형으로 바꿔줘야만 색상값으로 지정 할 수 있습니다. 이걸 actionscript 코드로 표현하면 아래와 같이 표현할 수 있습니다.

int(Math.Random() * 16777216)

위와 같은 형태로 랜덤한 색상을 생성할 수 있습니다.

그럼 응용 예제를 한번 만들어 보겠습니다.

package
{
	import flash.display.Sprite;
	import flash.events.TimerEvent;
	import flash.utils.Timer;
	
	import mx.events.*;
	
	public class randomTest extends Sprite
	{
		public function randomTest()
		{
			var timer:Timer = new Timer(100,0);
			timer.addEventListener(TimerEvent.TIMER, timerHandler);
			timer.start();
		}
		
		private function timerHandler(event:TimerEvent):void
		{
			createParticle();
		}
		
		public function createParticle():void
		{
			var color:uint;
			
			color = int(Math.random() * 16777215);
			var ball:Sprite = new Ball( Math.random()*6, color);
			ball.x = int(Math.random()*500);
			ball.y = int(Math.random()*500);
			addChild(ball);
		}
	}
}

import flash.display.*;
internal class Ball extends Sprite
{
	public function Ball( r:Number=4, c:uint =0x000000 )
	{
		graphics.beginFill( c);
		graphics.drawCircle( 0, 0, r );
		graphics.endFill();
	}
}

위와 같이 코드를 작성하고 실행하여 보겠습니다.


보시면 랜덤한 색상의 원이 0.1초 단위로 생성되는걸 확인하실 수 있습니다.

요즘 너무 바빠서 뭐라도 써야할꺼 같아서 구색맞추기용 글이었습니다 ㅋ ^^;;
저작자 표시 비영리
신고
Posted by 코멧'★

티스토리 툴바