코드로 cilrcle, rectangle, roundrectangle 그리기
setter / getter 와 클래스, 상속 개념을 이용하여
코드로 circle과 rectangle, roundrectangle을 그리려고 한다.
순서는
1. BaseShape 에 setter와 getter로 각 쉐입의 속성값을 정의한다.
2. 공통이 되는 속성은 drawMain으로 묶는다.
3. 각 도형의 값은 drawSub로 각각 정의해 준다.
BaseShpe.as
package com.timo.display
{
import.flash.display.Graphics;
import.flash.display.Sprite;
public class BaseShape extends Sprite //스프라이트의 상속을 받는다.
{
private var _fillColor : uint = 0xffffff; // default 값을 설정한다.
private var _fillAlpha : Number = 1; // fillColor 면색, fillAlpha : 면의 투명도
private var _lineColor : uint = 0x000000; // lineColor 테두리의 색, lineThickness 테두리의 두께, lineAlpha 테두리의 투명도
private var _lineThickness : Number = 1;
private var _lineAlpha : Number = 1;
public function BaseShape(width : Number . height : Number )
{
}
public function set fillColor ( value : uint ) : void
{
_fillColor = value;
}
public function get fillColor () : uint
{
return _fillColor;
}
public function set fillAlpha ( value : Number ) : void
{
_fillAlpha = value;
}
public function get fillAlpha ( ) : Number
{
return _fillAlpha;
}
public function set lineColor( value : uint ) : void
{
_lineColor = value;
}
public function get lineColor() : uint
{
return _lineColor;
}
public function set lineThickness ( value : Number ) : void
{
_lineThickness = value;
}
public function get lineThickness ( ) : Number
{
return _lineThickness;
}
public function set lineAlpha( value : Number ) : void
{
_lineAlpha = value;
}
public function get lineAlpha() : Number
{
return _lineAlpha;
}
//public : 오픈. private : 클래스 안에서 만 오픈( 자신만 )
// protected 자기 자신하고, 상속받은 자식까지만 보이게 하겠다.
protectred function drawMain ( ) : void
{
var g: Graphics = this.graphics;
g.clear();
g.beginFill(_filloColor, _fillAlpha);
g.lineStyle(_lineThickness, _lineColor, _lineAlpha);
drawSub();
g.endFill(); :
}
protected function drawSeb() : void
{
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Circle.as
package com.timo.display
{
public class Circle
{
private var _radius : Number = 30;
public function Circle( value : Number )
{
_radius = value;
drawMain();
}
override protected function drawSub(): void
{
var g: Graphics = this.graphics;
g.drawCircle( 0,0,_radius);
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Rect.as
package com.timo.display
{
public class Rect extend BaseShape
{
private var _width : Number = 0;
private var _Height : Number = 0;
public function Rect ( width : Number. height : Number )
{
_width = width;
_height = height;
drawMain();
}
override protected function drawSub() : void
{
var g: Graphics = this.graphics;
g.drawRect ( 0,0,_width. _height);
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
RoundRect.as
package com.timo.display
{
public class RoundRect extends BaseShape
{
private var _width : Number = 0;
private var _height : Number = 0;
private var _radius : Number = 0;
public function RoundRect( width : Number. height : Number. radius : Number )
{
_width = width;
_height = height;
_radius = radius;
drawMain();
}
override protected function drawSub () : void
{
var g: Graphics = this.graphics;
g.roundRect(0,0,_width, _height, _radius, _radius);
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Polygon.as
package com.timo.display
{
public class Polygon extends BaseShape
{
private var _n : int = 0;
private var _radius : Number = 0;
public function Polygon( n : int, radius : Number)
{
_n = n ;
_radius = radius;
drawMain();
}
override protected function drawSub () : void
{
for ( var i : int = 0 ; i < _n ; i++)
{
var xx : Number = 100 + _radius * Math.cos( i / _n * 2 * Math.PI - Math.Pi /2 );
var yy : Number = 100 + _radius * Math.sin( i / _n * 2 * Math.PI - Math.PI /2 ) ;
if( i ==0 )
{
g.moveTo(xx,yy);
}else{
g.lineTo(xx,yy);
}
}
}
} //class
} //package
색상 코드
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
사람눈이 256 단계 이상으로 나눈 인접한 두 값의 밝기는 구별하지 못한다.
따라서 색의 단계는 255,255,255로 표기
0xAARRGGBB 로 0X Alpha.Red.Green,Blue 로 표기
'코딩공부 > Action Script 3.0' 카테고리의 다른 글
전투신만들기 - 몬스터 생성하기 기초1 (0) | 2015.03.05 |
---|---|
dispatchEvent와 비동기 방식 프로그래밍의 개념 (0) | 2015.03.04 |
setter 와 getter (0) | 2015.03.03 |
무비클립을 클래스로 등록하여 제어하기 (0) | 2015.02.27 |
클래스 생성,규칙과 상속 관계 개념 (0) | 2015.02.27 |