scaleform.minarto.com

as3으로 기본 메뉴 만들기 본문

ActionScript

as3으로 기본 메뉴 만들기

미나토 2007. 6. 11. 14:42
물론 실무에서 사용하려면 이렇게는 쓸 수 없고 한참 바꿔야 할 것이다. 하지만 as2.0 을 좀 했던 친구들은 다음의 코드만 보면 as3.0 으로 금방 적응할 것이다...


package
{
 import flash.display.*;
 import flash.text.*;
 import flash.events.Event;
 import flash.events.MouseEvent;
 import flash.net.*;
 
 public class Main extends MovieClip
 {
  protected var loader:URLLoader;  
  public function Main():void
  {
   System.useCodePage = true;
   
   stage.align = StageAlign.TOP_LEFT;
    stage.scaleMode = StageScaleMode.NO_SCALE;

   loader = new URLLoader("url.xml");
   loader.addEventListener(Event.COMPLETE, complete);
  }
 
  function complete(event:Event):void
  {
   var xmll:XMLList = XMLList(event.currentTarget.data);
   
   var menu_array:Array = new Array();
   
   var cnt:uint = xmll.main.length();
   for(var i:uint=0; i<mainCnt; i++){
    var main_xml:XML = xmll.main[i];
   
    var lavel:String = main_xml.@name;
    var url:URLRequest = new URLRequest(main_xml.@url);

    menu_array.push({lavel:lavel, url:url});
   }
   
   
   start(menu_array);
  }
 
  protected function start(menu_array:Array):void
  {
   var prev_sp:Main_SP;
   
   var cnt:uint = menu_array.length;
   for(var i:uint=0; i<cnt; i++)
   {
    var obj:Object = menu_array[i];
   
    var main_sp:Main_SP = new Main_SP(obj.lavel, obj.url);
    main_sp.x = prev_sp.x + prev_sp.width + 20;
   
    addChild(main_sp);
   
    prev_sp = main_sp;
   }
  } 
 }
 
 public class Main_SP extends Sprite
 {
  protected var __url:URLRequest;
  protected var __tf:TextField;
 
  public function Main_SP(_lavel:String, _url:URLRequest)
  {
   __tf = new TextField();
   __tf.text = _lavel;
   __tf.autoSize = TextFieldAutoSize.LEFT;
   addChild(__tf);
   
   __url = _url;
   
   addEventListener(MouseEvent.ROLL_OVER, over);
   addEventListener(MouseEvent.ROLL_OUT, out);
   addEventListener(MouseEvent.CLICK, click);
  }
 
  public function over(event:Event):void
  {
   __tf.textColor = 0xFFCC00;
  }
  public function out(event:Event):void
  {
   __tf.textColor = 0x000000;
  }
  public function click(event:Event):void
  {
   navigateToURL(__url, "_top");
  }
 }
}


참고로 라이브 코딩만 하고 컴파일은 안한 것이라 문법 체그 이외의 테스트는 전혀 해보지 않았다... 그냥 코드만 보고 변경된 데이터 타입들과 클래스들을 확인하고 흐름만 알길...