我有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;
答案 0 :(得分:2)
我建议如下。
使用这样的条件编译器声明:
CONFIG :: MOBILE { public static var message:TMobileMessage; }
CONFIG :: DESKTOP { public static var message:TDesktopMessage; }
CONFIG :: WEB { public static var message:TWebApplication; }
为每个配置创建一个flex-config.xml。在每个config.xml中声明这些条件:
<强>柔性配置-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 :(得分: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";
}