[공지]이미지나 링크가 깨졌다면 댓글 부탁드립니다.
제가 예전에 Sprite 때문에 무지 고생한 적이 있었는데요. 그림만 그리는 Sprite라면 상관없었는데... 다른 UICompnent 를 올리기가 어렵더군요. 그때는 전혀 몰랐는데.... 이 글을 보고 약간 이해가 가는 것 같네요.
아래글은 http://www.cynergysystems.com/blogs/page/keunlee?entry=flex_2_beta_3_sprites 사이트를 제 나름대로 번역(?)한 겁니다.
---------------------------------------------------------------------
Flex 1.5 시절(전 해본적 없습니다)에 만약 shape나 그래픽을 stage에 추가할려면 createEmptyMovieClip나 MovieClipLoader를 사용했는데... Flex 2 Beta 3에서는 그 형태가 바뀌었습니다.
ActionScript 3 에서는 Sprite Class라 불리우는 새로운 Class를 사용하게 되는데... Sprite Object는 Movie Clip과 유사합니다만... Timeline이 없다는 것이 큰 차이점입니다. Sprite는 timeline을 요구하진 않는 곳에서 쓰일 수 있는 적합한 Base Class 입니다. 예를들어 Timeline을 사용하지 않는 UI(User interface) 컴포넌트의 기본 베이스 Class가 된다는 의미입니다.
Flex2 Beta3에서 우리가 Sprite를 동적으로 생성후 child로 add할 시에 flash.display::Sprite대신해 IUIComponent type이 되어야 합니다.(한마디로 Sprite를 직접 쓰면 안되고 UIComponent를 생성한 다음 그곳에 add하고 이 UIComponet를 자신의 parent에 add해야한다는 소리)
다음과 같이 쓰면 안됩니다.(This is baaad… don’t do this!)
이렇게 쓰지 마십시오 (Language : Flex)
public function drawStuff( ) : void { var circle1 : Sprite = new Sprite( ) ; circle1.graphics .beginFill ( 0xFFCC00 ) ; circle1.graphics .drawCircle ( 40 , 40 , 40 ) ; circle1.buttonMode = true ; addChild( circle1 ) }
다음과 같이 쓰면 좋습니다.(This is good… please do this…)
다음처럼 쓰십시오 (Language : Flex)
public function drawStuff( ) : void { var ref : UIComponent = new UIComponent( ) ; var circle1 : Sprite = new Sprite( ) ; circle1.graphics .drawCircle ( 40 , 40 , 40 ) ; circle1.buttonMode = true ; addChild( ref ) ; ref.addChild ( circle1 ) ;}
예제 프로그램 소스
SpriteExample.as (Language : Flex)
package { import flash.display.Sprite; import flash.events.*; public class SpriteExample
extends Sprite
{ private var size:uint =
100 ;
private var bgColor:uint = 0xFFCC00;
private var box:Sprite;
public function SpriteExample
( ) { var child:Sprite =
new Sprite
( ) ;
child.
addEventListener ( MouseEvent .
MOUSE_DOWN , mouseDownHandler
) ;
child.
addEventListener ( MouseEvent .
MOUSE_UP , mouseUpHandler
) ;
draw
( child
) ;
box = Sprite
( addChild
( child
) ) ;
} private function mouseDownHandler
( event:
MouseEvent ) :
void { trace
( “mouseDownHandler”
) ;
var sprite:Sprite = Sprite
( event.
target ) ;
sprite.
addEventListener ( MouseEvent .
MOUSE_MOVE , mouseMoveHandler
) ;
sprite.
startDrag ( ) ;
} private function mouseUpHandler
( event:
MouseEvent ) :
void { trace
( “mouseUpHandler”
) ;
var sprite:Sprite = Sprite
( event.
target ) ;
sprite.
removeEventListener ( MouseEvent .
MOUSE_MOVE , mouseMoveHandler
) ;
sprite.
stopDrag ( ) ;
} private function mouseMoveHandler
( event:
MouseEvent ) :
void { trace
( “mouseMoveHandler”
) ;
event.
updateAfterEvent ( ) ;
} private function draw
( sprite:Sprite
) :
void { sprite.
graphics .
beginFill ( bgColor
) ;
sprite.
graphics .
drawRect ( 0 ,
0 , size, size
) ;
sprite.
graphics .
endFill ( ) ;
} } }
SpriteExampleApplication.mxml (Language : java)
<?xml version=“1.0 ″ encoding=“utf-8 ″?> <mx:Application xmlns:mx=“http://www.adobe.com/2006/mxml” creationComplete=“onCreationComplete( ) ”> <mx:Script> <![ CDATA[ import SpriteExample; import mx.core.UIComponent; import mx.controls.Alert; public function onCreationComplete( ) : void { var spriteExample : SpriteExample = new SpriteExample( ) ; var ref : UIComponent = new UIComponent( ) ; addChild( ref ) ; ref.addChild ( spriteExample ) ; } ] ] > </mx:Script> </mx:Application>
실행예제
http://www.thekeunster.com/assets/spriteExample.swf
크리에이티브 커먼즈 라이선스
Adobe Flash Platform
flex ,
Sprite ,
UIComponent
최근 자료들을 많이 정리해서 올려주시네요.
많은 도움이 되고 있습니다.
혹 올리시는 글에 코드 색깔 넣는것은 어떻게 하시는지요.
열이아빠님 직접 왕림해주시고~ 영광입니다.
코드에 하이라이트 할려고 전 테터툴즈용 플러그인을 사용했습니다.
아래 링크에서 다운받았어요.
http://blog.hooriza.com/
이건 테터툴즈용 플러그인이라서 Tistory에는 아마도 안될 거 같습니다.
gdfgdfgfgfd
제가 올렸습니다.