okgosu-as-3d-ball.jpg

[구현원리]
0) AsExamOkGosuBall.as 클래스 생성 (작성방법은 이전 강의 참조)
1) 입체효과를 주기 위해 Matrix객체를 이용하여 원형 그라데이션을 적용한다. (Matrix, 액션정석 9장, 10장 참조)
2) 공의 하이라이트부분을 표현하기 위해 matrix옵션을 주어 그라데이션을 45도 상단으로 이동한다. (createGradientBox, 액션정석 9장 참조)
3) 마우스를 클릭하는 곳에 랜덤한 색상과 크기의 공을 추가하도록 한다. (Math.random, 액션정석 9장 참조)

package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Matrix;
    [SWF(width=800, height=480, backgroundColor=0x000000)]
public class AsExamOkGosuBall extends Sprite
{
private var matrix:Matrix = new Matrix();
public function AsExamOkGosuBall()
{
stage.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
addBall(e.stageX, e.stageY, Math.random()*0x1000000, Math.random()*50);
});
}
        
        private function addBall(px:Number, py:Number, color:int, r:Number):void {
         var ball:Sprite = new Sprite();
         var colors:Array = [0xFFFFFF, color];
         matrix.createGradientBox(-250*(r/100), -250*(r/100), Math.PI/2, r, r*0.8);
         ball.graphics.beginGradientFill("radial", colors, [1,1], [0,255], matrix);
         ball.graphics.drawCircle(0, 0, r);
         ball.x = px;
         ball.y = py;
         this.addChild(ball);
        }
}
}


profile