태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
밤하늘의 실제별, 나도 가질 수 있다?!

[팁]Sprite 사용법

2007/05/25 12:54

 

[공지]이미지나 링크가 깨졌다면 댓글 부탁드립니다.

제가 예전에 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

크리에이티브 커먼즈 라이선스
Creative Commons License

Adobe Flash Platform , ,

Trackback 주소: http://blog.jidolstar.com/trackback/86
  1. 2007/12/04 11:30
  2. 2008/04/17 08:39
    이상한 나라의 flex Tracked from 길가다 만나는 모든 반가운것들
  1. 최근 자료들을 많이 정리해서 올려주시네요.
    많은 도움이 되고 있습니다.
    혹 올리시는 글에 코드 색깔 넣는것은 어떻게 하시는지요.

  2. 열이아빠님 직접 왕림해주시고~ 영광입니다.

    코드에 하이라이트 할려고 전 테터툴즈용 플러그인을 사용했습니다.
    아래 링크에서 다운받았어요.
    http://blog.hooriza.com/

    이건 테터툴즈용 플러그인이라서 Tistory에는 아마도 안될 거 같습니다.

  3. gdfgdfgfgfd

  4. 제가 올렸습니다.