条件编译多个声明?

时间:2012-12-09 13:47:50

标签: actionscript-3 flex flex4.5

我有3个项目,这取决于相同的共享库。

库中有一个单例类,它在整个项目中提供全局共享对象,无论如何,这个全局共享对象是类的实例,这取决于平台,这是不同的,例如:

关于移动应用程序:

public static var message : TMobileMessage;

在桌面应用程序上:

public static var message : TDesktopMessage;

on web applcation:

public static var message : TWebApplication;
  • 如何在声明上实现条件编译,因为以下代码不起作用:

    If( CONFIG::applicationType == 'mobile' )
        public static var message : TMobileMessage;
    else
       If( CONFIG::applicationType == 'desktop' )
           public static var message : TDesktopMessage;
       else
           If( CONFIG::applicationType == 'web' )
               public static var message : TWebApplication;
    

2 个答案:

答案 0 :(得分:2)

我建议如下。

  1. 使用这样的条件编译器声明:

    CONFIG :: MOBILE {     public static var message:TMobileMessage; }

    CONFIG :: DESKTOP {     public static var message:TDesktopMessage; }

    CONFIG :: WEB {     public static var message:TWebApplication; }

  2. 为每个配置创建一个flex-config.xml。在每个config.xml中声明这些条件:

  3. <强>柔性配置-mobile.xml

    <compiler>
            <define>
                <name>CONFIG::MOBILE</name>
                <value>true</value>
            </define>
            <define>
                <name>CONFIG::DESKTOP</name>
                <value>false</value>
            </define>
            <define>
                <name>CONFIG::WEB</name>
                <value>false</value>
            </define>
    </compiler>
    

    <强>柔性配置-desktop.xml

    <compiler>
    
            <define>
                <name>CONFIG::MOBILE</name>
                <value>false</value>
            </define>
            <define>
                <name>CONFIG::DESKTOP</name>
                <value>true</value>
            </define>
            <define>
                <name>CONFIG::WEB</name>
                <value>false</value>
            </define>
    
    </compiler>
    

    <强>柔性配置-web.xml中

    <compiler>
    
            <define>
                <name>CONFIG::MOBILE</name>
                <value>false</value>
            </define>
            <define>
                <name>CONFIG::DESKTOP</name>
                <value>false</value>
            </define>
            <define>
                <name>CONFIG::WEB</name>
                <value>true</value>
            </define>
    
    </compiler>
    
    1. 在构建脚本或IDE中使用适当的flex-config。

答案 1 :(得分:1)

如果将CONFIG定义为编译器参数,或者moify flex_config.xml,则可以使用以下命令:

(TDesktopMessage,TMobileMessage等应该扩展IMessage或任何你想要的。)

public static var message:IMessage;


CONFIG::mobile
{
  msg = "mobile"; //or msg = messages[mobile] or however you want to declare
}

CONFIG::desktop
{
  msg = "desktop";
}

CONFIG::web
{
  msg = "web";
}