2009.12.18 15:13



끝 머리가 둥근 호를 그려주는 클래스 입니다.

예제 결과는 제 블로그에 올려진 RoundClock을 보시면 되겠습니다. (링크 : http://quadflask.tistory.com/192)

=============

플생에 님이 올려주신 호그리기 클래스에 좀더 살을 붙여 만들었습니다. (링크 : http://cafe.naver.com/flashdev/39472)

특징은, 호를 그릴때 면으로도 그릴 수 있고, 이 면에 대해서 모서리에 라운드 파라미터를 줄 수 있습니다. (자세한 그림은 나중에 업로드 하겠습니다...)

그리고, 텍스트 필드를 호에 따라서 그릴 수 있도록 해두었습니다.

이 클래스가 지금 완성된게 아니고 아직 고칠부분이 몇군데 있습니다. 언제 고칠지는 모르겠구요,,,,혹시나 고쳐주신다면 저에게도 공유를 해주셨으면 합니다..ㅎㅎ



클래스 설명

기본으로 있는 드로잉 API 처럼 먼저 스타일을 선언해주고 난뒤 그려주시면 됩니다.

( ※참고 : 각도는 라디안이 아닙니다. )

drawArc(mc:Graphics, x:Number, y:Number, r:Number, start:Number, end:Number):void

선으로 이루어진 호를 그려주는 매서드입니다.
mc : 그려줄 객체(컨테이너라고 할까요?)
x : x 위치
y : y 위치
r : 반지름
start : 호를 그릴 시작 각도 (3시가 0도, 6시가 90도가 됩니다.)
end : 호를 그릴 끝 각도

즉 시작 각도에서 끝나는 각도까지 호를 그려줍니다.

pri_drawArc(mc:Graphics, x:Number, y:Number, r:Number, start:Number, end:Number, reverse:Boolean = false):void

이놈은 drawRoundArc 에서 쓰이는 함수입니다.


drawRoundArc(mc:Graphics, x:Number, y:Number, r:Number, start:Number, end:Number, round:Number, thickness:Number):void

면으로 이루어지고 라운드 파라미터를 줄 수 있는 호를 그려줍니다.
mc : 그려줄 객체(컨테이너라고 할까요?)
x : x 위치
y : y 위치
r : 반지름
start : 호를 그릴 시작 각도 (3시가 0도, 6시가 90도가 됩니다.)
end : 호를 그릴 끝 각도
round : 둥글게 할 값 (이 값은 최대 thickness 까지만 가능합니다. 그 이상의 값을 넣으면 자동으로 thickness 로 설정되게 됩니다.)
thickness : 두께를 설정합니다.


// 이 아래는 그닥 쓸일이 없을것 같네요,.,, 그리고 최적화가 되질 않았네요,,,(물론, 위 코드들도..;;)

creatTextField(TFArr:Array, targetCanvas:Sprite, TF_TextFormat:TextFormat, str:String, r:Number, thickness:Number):Number

반지름에 알맞게 휜 텍스트 필드를 만들어 줍니다.
TFArr : 텍스트 필드가 생성됬을때 이 배열에 담아줍니다. (str의 문자 객수만큼 생성됩니다.)
targetCanvas : 생성한 텍스트 필드를 이객체에 붙여줍니다.
TF_TextFormat : 생성한 텍스트 필드에 적용할 포맷입니다.
str : 텍스트 필드에 넣을 문자열의 형식입니다. 예를 들어서, "5 Seconds" 를 표시할땐, "00 Seconds" 처럼 넣어주시면 됩니다. 또는 "AAAAAAAAAA" 로 넣어주시면 됩니다. (일일이 문자 갯수를 세는 번거로움을 없애기 위해서 이렇게 구현했네요;;;;)
r : 반지름
thickness : 쓰...쓸모없는 파라미터군요;;;;;;;;;;;;;;;;;;; 지워야 겠군요;;


ArcText(str:String, TFArr:Array, angle:Number, r:Number, thickness:Number, tf_length:Number):void

이 함수를 통해서 위에서 생성한 텍스트필드가 들은 배열을 받아와 문자를 갱신시켜줍니다.
str : 갱신할 문자열입니다.
TFArr : 텍스트 필드가 들어있는 배열입니다.
angle : 이 텍스트 필드가 위치할 각도 입니다. (roundclock 에선 텍스트 필드가 호의 끝을 따라서 가기 때문에 이 파라미터가 들어가게 됬습니다.)
r : 반지름
thickness : 쓰...쓸모없는 파라미터군요;;;;;;;;;;;;;;;;;;; 지워야 겠군요;;
tf_length : 텍스트 필드의 길이 입니다. (어따가 써먹었는지 까먹었네요,,,)


위 클래스를 사용한 예제를 보겠습니다.


예제

RoundClock 소스

최적화를 했었는데, 별 차이가 없더군요,.,,,,(싱글코어인 제 컴에선 13~19%의 점유율이 3~16%으로 줄었지만, 고사양컴에서는 0~3% 그대로라고 합니다;;;;;;;;;;;;) 아직 다 만들어 진게 아니라서 그냥 참고용으로만 보시면 되겠습니다.


전체적인 구조

1. 먼저 호가 그려질 캔버스를 생성하고
2. 텍스트가 들어간 캔버스를 따로 생성합니다.
3. 텍스트 필드를 생성해줍니다.
4. 매 프레임마다 호를 그려줍니다.
5. 매 프레임마다 텍스트필드의 문자열을 갱신해줍니다.

소스 (fla 의 1번 프레임에 삽입)

더보기




다운로드


09/12/19

더보기


'[+++ FLASH +++] > - - Open Source' 카테고리의 다른 글

[Open Source : AS 3.0] Color2  (0) 2010.01.06
[Open Source : AS 3.0] drawArc  (5) 2009.12.18
<Open Source> [ AS2.0 ] 흔 적  (2) 2009.07.21
<Open Source> [ AS2.0 ] 수식 계산기 ver 1.5  (2) 2009.07.13
Trackback 0 Comment 5
  1. 2009.12.23 10:43 address edit & del reply

    비밀댓글입니다

  2. 2009.12.24 14:57 address edit & del reply

    비밀댓글입니다

  3. 예제컴파일안됨 2009.12.26 02:16 신고 address edit & del reply

    예제 컴파일하면 에러나옵니다...
    주로 1172, 1120, 5001 로 8개정도 뜨네요...

  4. 2009.12.28 11:46 address edit & del reply

    비밀댓글입니다

  5. 2009.12.30 11:26 address edit & del reply

    비밀댓글입니다