2009/12/19 23:30 Flash Platform/액션스크립트
삼각함수를 이용한 다각형 그리기
이번에는 삼각함수를 이용해서 다각형을 기리는 방법에 대해서 적어볼려고 합니다.
우선 나온 결과물은 이렇습니다.
일부로 뒤로 갈수록 빨리그려지게 만들어봤습니다.
각은 77개 까지만 만들어봤습니다.
var sprite:Sprite = new Sprite( );
sprite.x = stage.stageWidth/2;
sprite.y = stage.stageHeight/2;
function polyStar( spr:Sprite, w:Number, p:uint ) : void
{
spr.graphics.clear();
spr.graphics.lineStyle( 1, 0xFF0000 );
spr.graphics.beginFill( 0xFFFFFF );
var posX:Number = w/2 * Math.cos( ( 360/p * p-1 ) * Math.PI/180 );
var posY:Number = w/2 * Math.sin( ( 360/p * p-1 ) * Math.PI/180 );
spr.graphics.moveTo( posX, posY );
for( var i:int; i < p; ++i )
{
posX = w/2 * Math.cos( ( 360/p * i ) * Math.PI/180 );
posY = w/2 * Math.sin( ( 360/p * i ) * Math.PI/180 );
spr.graphics.lineTo( posX, posY );
}
spr.graphics.endFill();
}
this.addChild( sprite );
var timer:Timer;
drawStart();
function drawStart() : void
{
timer = new Timer( 1000 );
timer.addEventListener( TimerEvent.TIMER, onTimer );
timer.start();
}
function onTimer( e:TimerEvent ) : void
{
polyStar( sprite, 300, timer.currentCount );
timer.delay += ( 0 - timer.delay ) * 0.1;
if( timer.currentCount == 77 ) timer.stop();
txt.text = "각 수 :: " + timer.currentCount;
}
btnReset.addEventListener( MouseEvent.CLICK, onResetClick );
function onResetClick( e:MouseEvent ) : void
{
timer.stop();
drawStart();
}
플래시 타임라인에서 코딩한 것 입니다.
위의 정도만 만들수 있다면 원모양 만드는것 같은것은 어느정도 해결할 수 있지 않나 싶습니다.
posX = w/2 * Math.cos( ( 360/p * i ) * Math.PI/180 ); posY = w/2 * Math.sin( ( 360/p * i ) * Math.PI/180 );
제가 생각하는 다각형 만들기의 핵심 부분입니다.
삼각함수에 대해서는 이전에 쓴 글인
삼각함수를 이용한 원그리기( http://hhjae84.tistory.com/50 ) 를 참고하시면 될 것 같습니다.
timer.delay += ( 0 - timer.delay ) * 0.1;
이 부분은 그리는 속도를 조절할려고 집어넣은 부분입니다.
감속도 같은것을 보시면 이해하시기 쉬울것 같습니다.
'Flash Platform > 액션스크립트' 카테고리의 다른 글
| 삼각함수를 이용한 다각형 그리기 (2) | 2009/12/19 |
|---|---|
| DragManager (1) | 2009/12/03 |
| asdocs 만들기 (0) | 2009/11/12 |
| Bitmap 사용과 비사용의 차이 (0) | 2009/11/12 |
| BetweenAS3 (0) | 2009/10/12 |
| TweenMax (0) | 2009/10/12 |
댓글을 달아 주세요
비밀댓글입니다
비밀댓글입니다