Flex 编译部分代码技术【原创】

  

  条件编译:根据条件,有选择编译程序中的部分代码.不是很清楚的可以 baidu.下面是百度百科中的定义.

一般情况下,源程序中所有的行都参加编译。但有时希望对其中一部分内容只在满足一定条件下才进行编译,即对一部分内容指定编译条件,这就是“条件编译”(conditional compile)

条件编译一般用来控制同一个项目的多个版本,如游戏中,上不同平台的版本需要实现不同的平台接口.条件编译可以在一个项目方便的控制版本的同时不增加编译后的程序文件大小(这对 web 游戏很重要,第一次加载的速度越快,则可能完成游戏新手引导的人会越多.),同时还不损耗程序的性能.

  Flex项目开发中,可能会有编译部分代码的需求,像游戏开发,如果所有的代码都编译会很耗时,下面来介绍该技术:

  先是新建一个ActionScript工程,然后创建这样的一个类:

View Code
 1 package
 2 {
 3     import flash.display.Sprite;
 4     import flash.text.TextField;
 5     
 6     /**
 7      * 条件编译演示(在多版本控制中比较好用,比如下面指定的"中文版","日文版","英文版".在项目中也可以用来控制 web 版和 pad 版)
 8      * <p>编译后的代码量不会增加,因它是编译时进行处理的.<b>所谓的条件编译是指:<font color="#ff0000">根据指定的条件:选择性的编译其中的某一部分</font></b></p>
 9      * <p>需要在项目的编译选项中附加如下编译常量:</p>
10      * <listing version="3.0">
11      * -define=CONFIG::CHINESE,false
12      * -define=CONFIG::JAPANESE,false
13      * -define=CONFIG::ENGLISH,true
14      * </listing>
15      * 编译选项的设置:
16      * <table>
17      * <tr>
18      *         <td>flash builder</td><td>选择要进行设置的项目 -> 右击 -> 选择"属性" -> 选择"ActionScript编译器" -> "附加的编译器参数"中指定</td>
19      * </tr>
20      * <tr>
21      * <td colspan="2">其它的参见:<a href="http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_21.html">http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_21.html</a></td>
22      * </tr>
23      * @author blank
24      * 
25      */
26     public class conditionCompile extends Sprite
27     {
28         /**
29          * 名字
30          * @return 
31          * 
32          */
33         private function get pName():String{
34             CONFIG::CHINESE{
35                 return "小明";
36             }
37             CONFIG::JAPANESE{
38                 return "梅川库子";
39             }
40             CONFIG::ENGLISH{
41                 return "鸡姆";
42             }
43         }
44         
45         /**
46          * 国籍
47          * @return 
48          */
49         CONFIG::CHINESE{
50             private function get nationality():String{
51                 return "中国"
52             }
53         }
54         CONFIG::JAPANESE{
55             private function get nationality():String{
56                 return "日本"
57             }
58         }
59         CONFIG::ENGLISH{
60             private function get nationality():String{
61                 return "英国"
62             }
63         }
64         
65         public function conditionCompile()
66         {
67             var txf:TextField=new TextField();
68             txf.text="名字:" + pName + "\n" +
69                 "国籍:" + nationality;
70             
71             txf.width=txf.textWidth + 4;
72             txf.height=txf.textHeight + 4;
73             addChild(txf);
74         }
75     }
76 }

然后配置编译器参数,这一步是最关键的,否则编译器会报错,程序会跑不起来:

    配置编译器参数

点击确定后,就会发现编译器不再报错了,而且你会发现FB编译器只会编译在编译参数中设置为true的变量,修改起来也就会显得更加方便.

posted @ 2013-01-30 10:11  梦飞无痕  阅读(206)  评论(0编辑  收藏  举报