[AS3 , Enum] AS3 에서 Enum Type 을 구현하자 (Fake Enum in AS3)


C#과 AS3 를 혼용 하여 사용하는 본인에게 AS3 에서 가장 아쉬운것중 하나는 Enum 타입이 없다는것이다.
물론 

class SomeClass{  
    static const ENUMStr : String = "ENUM_STRING";
}
이런식으로 클래스 안에서 열거 하여 사용은 가능하다. 그러나 관리 적인 측면에서 아래와 같은 경우가 발생할때 참으로 애매하다.

function insertEnumValue (_enumType : String):void
{
if(_enumType == SomeClass.ENUMStr ){ ... }
}


 위와 같은 상황에서 _enumType:String 의 값을 넣는 과정에서 함수 안의 코드가 SomeClass 에서 정확히 정의된 스트링을 받아 처리 한다면 아무런 문제가 없다. 하지만 함수의 인자 타입이 String 이다. 이것의 의미는 구지 함수 인자를 SomeClass.ENUMStr 을 안넣어도 아무런 문제가 되지 않는다 (쇠고랑 안찹니다... 경찰이 안잡아가요...)
컴파일러는 단지 일치하는 String 이 없을 뿐 , 에러를 뱉지 않지만 , 그게 더 문제다. 제3자가 이 함수를 사용한다고 하자 , 혹은 오래전에 작성했던 코드를 본인이 본다고 해보자. 아마 작성자가 SomeClass.ENUMStr 을 넣어 주리라고 기대하는것은 너무 아름다운 순정만화 같은 생각 아닌가?
(물론 본인은 예전에 함수 위에 주석으로 설명을 적어 올바른 작성을 유도 하였다. 하지만 코드 자체가 오염될 여지가 있고 제 3자 가 또 다른사람에게 코드를 넘길때 , 주석이 온전히 존재하고 있을까?)

여차 하면 오리무중이 될수 있다.

또 한가지 문제 상황이 생긴다. 바로 Event 타입 상수 이다. 보통 이벤트를 이렇게 작성한다.
class SomeEvent :Event
{
    public static const EventType : String = "SomeEvent.EventType"
    public SomeEvent (type:String, ..(생략)..){...}
}

와 같이 작성하고 ,

dispatchEvent( new SomeEvent( SomeEvent.EventType ));

처럼 이벤트를 발생시킨다.

만약 SomeEvent 에 종전과 같은 방식으로 ENUMStr 를 작성 한다고 생각해보자.

class SomeEvent :Event
{
    static const ENUMStr : String = "ENUM_STRING";
    public static const EventType : String = "SomeEvent.EventType"   
    public SomeEvent (type:String, ..(생략)..){...}
}

그리고 이벤트를 발생(dispatchEvent) 시키고 받을때(addEventListener)를 생각해 보면
아마 혼동이 팍! 올것이다.

dispatchEvent( new SomeEvent( SomeEvent.ENUMStr )); //??
dispatchEvent( new SomeEvent( SomeEvent.EventType)); //??


addEventListener(SomeEvent.ENUMStr , func ) //??
addEventListener(SomeEvent.EventType, func ) //??



참.. 생각하기도 싫은 상황이다. 이것을 위해 이벤트의 코드 힌트를 보고 인간적으로 이해를 해야 하는가?
예를 들어 "EventType 이라고 적어 놓았으니 , Event 상수겠지..." 이런 생각은 물론 거의 대부분 맞다. 하지만
어디까지나 예상일뿐 명확하지는 않다.


그래서 이러한 상황을 타계 하고자 다른 언어에서 존재하는 가벼운 Enum 타입이 필요 하다.


원문 : http://scottbilas.com/blog/faking-enums-in-as3/
 
package jjongun.devUtil.enum
{
    import flash.utils.describeType;

    public class EnumUtil
    {
        public static function InitEnumConstants(inType : *):void
        {
            var type : XML = describeType(inType);
            
            for each(var constant : XML in type.constant)
            {
                inType[constant.@name].text = constant.@name;
            }
        }
    }
}


추상 클래스가 필요하다.
 
package jjongun.devUtil.enum
{
    public class AbsEnum
    {
        public var text :String;
        public function AbsEnum(ChildClass :Class)
        {
            EnumUtil.InitEnumConstants(ChildClass);
        }
    }
}



실제 ENUM을 구현하는 클래스 이다. 여기서 바로 ENUM을 선언하여 사용한다.
 
package
{
    import jjongun.devUtil.enum.AbsEnum;

    public class EnumTEST extends AbsEnum
    {
        public static const INIT : EnumTEST = new EnumTEST();
        public static const ENUMTEST : EnumTEST = new EnumTEST();
        
        public function EnumTEST()
        {
            super(EnumTEST);
        }
    }
}


실제 사용이다. 따로 new 키워드를 사용할 필요 없이 여느 enum 과 같은 형태로 사용이 가능하다.
 
        public function TESTCLASS()
        {
                        
            testEnum(EnumTEST.ENUMTEST);
        }
        public function testEnum(type :EnumTEST):void
        {
            if(type == EnumTEST.ENUMTEST)
            {
                trace("ok!" , type);
            }
        }


Yamecoder 야매코더_
AS3 2011. 10. 15. 23:37

댓글을 달아 주세요

  1. 이전 댓글 더보기
  2. BlogIcon louis vuitton bags sale 2013.10.25 04:14  수정/삭제  댓글쓰기

    버에WASHINGTON— With the National Park Service under fire from Republicans for how it's gone about shuttering parks and monuments it operates during the 16-day-old government shutdown, Democratic lawmakers and the director of the NPS on Wednesday fiercely defended the agency's actions.

    Democrats blasted Republican Reps. Darrell Issa, of California, and Doc Hastings, of Washington,louis vuitton for를메

  3. BlogIcon canada goose outlet 2013.11.28 12:28  수정/삭제  댓글쓰기

    단우Det grundlæggende i DSLR-kameraer

    Det grundlæggende i DSLR-kameraer

    Når man ser for et DSLR-kamera, kigge efter dem med megapixel til din prisklasse. Flere pixels kan føre til bedre billeder, mens du er vandreture. Fordi du sandsynligvis vil tage kameraet ud i marken og skyde scener med handling, kan du også ønsker et kamera med en højere frame rate og brast dybde. Du kan finde kameraer med 할메

  4. BlogIcon モンクレール 2014 2013.12.01 15:49  수정/삭제  댓글쓰기

    지일믦낗맣莈볣莖⃧꾀묍਍ૣ芿ꛣ莳ꛣ芧ꋣ膨韣膦껣莀ꛣ莳룣莣뇣莃裣芒髧鶀闣膛齄啖䕔䥃䄨蟣莥駣莆ꏣ芫⧣膮냤붜䵅剁䝅呅䑕䗣膧駦鞥곤벁믣膮駣膣跣芊韣膟럣莫꣣莃裣膮胣芦돣芸ꏣ花菣莈꟣膙苣膾诣膧ꯣ芷鿣芢鋦肝迣膛诣芈蛣膪釣芉诣膪诨Ꞧ諣膨铣芉诣膕꟣肁飧뒚鿣膮苣芋諥鎁ꫤ뮕諣膌諣膫ꫣ膣ꛣ膄뻣膙胨蒱賥辯뷣膪闣莼解芒臣膡臣芪돣莻ꫣ莕ꧣ膡解膮맣芿ꓣ莫ꯣ节裣芏鯣芉賣膾駣莕귣莳裣膮胣莖ꯣ芹ꧣ芤胣莼臨ꎾ꣨ꊖ껣莪難膧닥꾒뻧궖꿤뢇꣣肂䑕噅呉䍁껨ꪇ诩ꮘ臨뎪껣莀ꛣ莳꣥邈迣膛ꛤ뾝ꧦ肧껩ꮘ蓩肸臣膧駦鞥곤벁믣膮ꋣ芤蛣莠꟣肁뗣芤뫨ꆨ飣膌鏦鶥꣧閰ꫣ芊뻣膙苣膊꿦覕맦뎕髣膊꿨뺼믤뮣釥법鯣莻ꯣ莼触놺裣메에

  5. BlogIcon エルメス バッグ ピコタン 2013.12.02 17:45  수정/삭제  댓글쓰기

    마려新品エルメス バッグ バーキン30 トリヨン アルザン シルバー金具♪,サンローラン バッグ

    本日もいい感じのお天気公園に植えてある木や花をみているとやっぱり春というより月という印象が強いです

    新緑の鮮やかな緑色は見ているだけでも元気になれるのでブランドマニアは大好きです

    さてさて本日はこのバックにビビッときたのでご紹介させてください

    【新品】HERMES(エルメス) バッグ バーキン30 トリヨン アルザン シルバー金具

    女優ジェーン・バーキンのために作られ、荷物の多い彼女にぴったりのバッグはオータクロアを原型としており、収納力、頑丈さ、機能性の高さが特徴です月の新緑が持つ強烈な緑色に負けない存在感昼でも夜でも違和感なく使えそうなところもさすがエルメス

    エルメスのアイテムってブランド品の中でもお値段が張るのであんまり買ったことないのですが

    鮮烈な에지

  6. BlogIcon クリスチャンルブタン 銀座 2013.12.02 17:45  수정/삭제  댓글쓰기

    려마益若つばさ顔事故の真相,エルメス バッグ コピー

    PM2.5 お得 まつ毛美容液スカルプD イソラコンプレミアム エルメスバッグ カルピスバター販売店東京横浜 ガリレオ サロニアヘアアイロン激安口コミ シワ テゴマスサヨナラにさよなら ニチモウイソラコン マイケルジャクソンイモータルチケット 中国レーダー照射 中森明菜今現在2013 中森明菜現在 中森明菜近藤真彦 乾燥肌サプリメント潤い 京都大将軍八神社お守り御守 健康衛生 吉高由里子熱愛 安藤美姫情報引退 嵐,エルメス バッグ 種類 一覧,Endress game 怪物くん 救命病棟24時 松田聖子 松田聖子現在2013 武田久美子ヘア 浅田真央フィギュアスケートテレビ東京 爆報!THEフライデー 産後小雪 益若つばさ離婚顔事故 真夏の方程式 美肌整形 西島秀俊 赤ちゃん 速水もこみちオリーブオイル 鈴木えみ結婚すっぴん
    相关的법다

  7. BlogIcon エルメス バッグ トート 2013.12.05 00:27  수정/삭제  댓글쓰기

    리에. ミスやパンナコッタやタルトなど。種類ご用意しております! 銚子一山いけすのハマグリとフレッシュトマトの白ワイン蒸し 大きな粒のハマグリをシンプルに! . パンナコッタ、ムース、タルト、チョコラータなど常時種をご用意 マンジャ・ペッシェ(原宿):明治通り沿いの外観 たこ バーニャカウダ ショーケースのデザート . 行けば必ず注文します。1978年オーナーかつデザイナーに着任した。ミュウミュウ(Miu Miu)はミウッチャ・プラダの幼いころのニックネームが由来となっている展示されている衣装について。2013春夏新作,サンローラン メンズ!人気のがま口スタイルがリニューアル。かぶせのふたが付きました。ジュートはボリュームがあり、保温性、寸法の安定性に優れると言う特徴があり、敷物やバックなどに幅広く用いられています,ニューバランス レディース 人気。原産国:インド サイズ:321125cm。
    일가

  8. BlogIcon beats wireless 2013.12.05 01:25  수정/삭제  댓글쓰기

    지데"Escadron Shadow est responsable de l'assassinat Kitamiya organisation familiale, spécialisée en japonais Ninjutsu, bien dissimuler le lieu où leur nombre est encore moins que casque beats solo les équipes tués, un total de seulement douze ans, Kitamiya ont perdu un héros ne peut pas se permettre. Pour Kitamiya héros, la vitesse de Voyage de l'équipe et d'accélérer un peu, je ne sais pas pourquoi,및이

  9. BlogIcon casque audio pas cher 2013.12.05 01:25  수정/삭제  댓글쓰기

    메는Liujun Ren fronça les sourcils sévèrement mal à l'aise en laissant Blanc Chi Qi-vous. Après un agent de haut niveau assis six écoles. Quatre soldats hautement qualifiés debout deux chaises côté. C'est là ce qui est simplement invité à parler lors du procès il! "Bonsoir, je vous demande c'est, s'il vous plaît laissez-nous parler d'elle ou procès? Si votre niveau n'est pas suffisant de parler! Si vo는조

  10. BlogIcon エルメス バッグ 種類 2013.12.05 05:56  수정/삭제  댓글쓰기

    상할10鐢锋�х敤銇偒銉愩兂銈掋仌銇屻仐銇︺亜銇俱仚銆傘亰銇欍仚銈併伄銉栥儵銉炽儔銈掋亰銇椼亪銇︺亸銇犮仌銇�銈堛亸銇勩倧銈屻倠濡婂鍒濇湡銇笅鑵归儴鐥涖仯銇︺�佸叿浣撶殑銇仼銈撱仾鐥涖伩銇с仚銇嬶紵銆� 銉兂銈枫儳銉儉銉笺儶銉ャ儍銈伄鍗婂垎銇ぇ銇嶃仌銇с仚銆� 銉戙偪銉笺兂銇�屻儚銉笺儠銉儱銉冦偗鍨嬨儨銉囥偅銉愩儍銈般�嶃伄銈傘伄銈掍娇銇c仸 浣溿倞鏂广倰銇嬨亪銇︿綔銇c仸銇裤伨銇椼仧銆傘仈娉ㄦ枃鏅傘伄鍦ㄥ韩鍒囥倢銇牬鍚堛伅銆佹鍥炰簣瀹氥伄绱嶆湡绛夈仢銇棬銇旈�g怠銇勩仧銇椼伨銇欍�傗�汇儵銈ゃ儓銇厜銈勩儢銉┿偊銈躲兗銇ц壊銇仌銇勩亴銇傘倠鍫村悎銇屻仈銇栥亜銇俱仚銆傜礌鏉愶細500銉囥儖銉笺儷Spectra銉娿偆銉兂銈般儸銈淬儶銉笺兓銈点儍銉併偋銉玀鑹诧細銉┿偆銉堛偘銉兗锛圫teel Ballistic/Dynebna)绱犳潗锛氥儣銉儫銈€儬1680銉囥儖銉선메

  11. BlogIcon モンクレール メンズ 2013.12.05 05:56  수정/삭제  댓글쓰기

    뉴종プライヤーホルダー モバイルポケット(4580109179808)ダイナミックス(DYNAMICS) ジークラックショルダーバッグミニパープル使いやすさはそのままなコンパクトショルダーバッグ。人気のショルダーバッグをダウンサイズしたモデルです。ブランド/PRADA(プラダ)コメント上質なレザーの風合いが素敵なトートバッグです。シンプルなフォルムに、PRADAロゴマークがアクセントになっています。顔周りがパッと華やぐレースがポイントのカットソーチュニック。ウエストはブラウジングでき、2通りのシルエットが楽しめます。サファイア?クリスタルガラスを表底盖のみを采用し、バンド針扣チタン材質で作った。表圏ねじは精鉄鋼材质だ,ニューバランス 574。

    凛々しいうさぎさんと蜘蛛(!)が入って、まぁ、かっちょええのよ帰り際に、このイカス(死語?)ポストカードもいただきましてんわたし、ちきりやのジャン니없

  12. BlogIcon サングラス 専門&#24215 2014.03.23 03:15  수정/삭제  댓글쓰기

    메적「,カザール サングラス......ブルーのを意識する可能性が高い,カザール 通販......しかし、私はいつもそう感じて、奇妙なことは、彼らは張胡見つけた何もないところ,激安 レイバン サングラス......私にはわからないです」といくつかの最初の言葉は影だっ終わっていない:朱Gaoxiはささやい6月には、どういうわけか、それは大きな開口部の前にしばらく時間がかかったし、質問:朱Gaoxiはチェンを見て、Pachaoは6月の宮殿によると耳元でささやいた、スリープ状態に彼に見えた「恵みあなたは、について話している,レイバン 新着?? ":"張胡と赵大龙鄭は、ブルーのホームの後、二人は2より後に、神秘的な数字はに、チェン·ファミリーの家にこっそり来ているまでは、ブルーのと彼の母親の一挙手一投足を監視して交代で、家でガードにされている一方、子供たちは、内側からの図をした後で夜の影を見れば、리지

  13. BlogIcon 匿名 2014.08.19 14:27  수정/삭제  댓글쓰기

    이용약관위배로 관리자 삭제된 댓글입니다.

  14. BlogIcon 匿名 2014.09.11 01:21  수정/삭제  댓글쓰기

    이용약관위배로 관리자 삭제된 댓글입니다.

  15. BlogIcon 匿名 2014.09.11 12:20  수정/삭제  댓글쓰기

    이용약관위배로 관리자 삭제된 댓글입니다.

  16. BlogIcon gucci bags sale 2014.10.26 08:54  수정/삭제  댓글쓰기

    이용약관위배로 관리자 삭제된 댓글입니다.

  17. BlogIcon moncler outlet store 2014.11.11 23:08  수정/삭제  댓글쓰기

    이용약관위배로 관리자 삭제된 댓글입니다.

  18. BlogIcon 深圳横岗眼镜批发 2014.11.12 00:51  수정/삭제  댓글쓰기

    이용약관위배로 관리자 삭제된 댓글입니다.

  19. BlogIcon parajumpers jackets 2014.11.28 08:26  수정/삭제  댓글쓰기

    이용약관위배로 관리자 삭제된 댓글입니다.

  20. 匿名 2015.01.15 12:21  수정/삭제  댓글쓰기

    이용약관위배로 관리자 삭제된 댓글입니다.

  21. 匿名 2015.02.11 14:03  수정/삭제  댓글쓰기

    메방骑士服务端天上碑服务端美丽世界服务端科洛斯服务端石器时代服务端

    完美世界服务端烈焰服务端洛汗服务端新魔界服务端绝对女神私服务端

    征服服务端传说45服务端天之炼狱服务端天堂II私服务端墨香私服务端


    传奇开sf一条龙开区服务-

    天龙八部开私服一条龙服务-


    传奇广告代理-

    IDC服务器以及空间租用-

    魔域私服开区一条龙服务-


    客服咨询QQ(企鹅扣扣)49333685

    Email:49333685@qq.com

    后浪科技更多商业版本免费开放下载




    后浪科技科技仿官神武血魔版服务端



    后浪科技石器时代VIP最新V10纯金开区端



    后浪科技热血江湖3.5宠门武勋开区端



    后浪科技剑侠情缘X2.0商业版本服务端



    后浪科技v2.07已开5区七转神台天降横财八卦玄阵血魄技에버

Powerd by Tistory, designed by criuce
rss