Actionscript 3 在ActionScript3中,类变量的条件if/else编译有效吗?
我正在使用Flash Builder 4.6和AIR 3.5中的AS3类 是否有人可以确认以下if/else语法在类定义中有效。我已经对它进行了测试,它可以在Mac上编译和运行,但我找不到支持它的文档Actionscript 3 在ActionScript3中,类变量的条件if/else编译有效吗?,actionscript-3,apache-flex,air,Actionscript 3,Apache Flex,Air,我正在使用Flash Builder 4.6和AIR 3.5中的AS3类 是否有人可以确认以下if/else语法在类定义中有效。我已经对它进行了测试,它可以在Mac上编译和运行,但我找不到支持它的文档 package controller { import flash.desktop.NativeApplication; import flash.display.NativeMenu; import flash.display.NativeMenuItem; im
package controller
{
import flash.desktop.NativeApplication;
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.display.NativeWindow;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
[Bindable]
public class AppMenu extends EventDispatcher
{
if (Capabilities.os.search("Mac")>-1) {
public var titularMenu:NativeMenu;
public var fileMenu:NativeMenu;
public var editMenu:NativeMenu;
private var optionsMenu:NativeMenu;
private var addOnsMenu:NativeMenu;
private var helpMenu:NativeMenu;
} else {
// Assign same variables as NativeMenuItem, for Windows.
}
// etcetera
}
不,在方法或初始值设定项之外不能有if/else条件
出于您的目的,您只需在接口
IAppMenu
中定义泛型属性/方法,然后每个操作系统都有一个实现(当然,您仍然需要使用功能.OS
定义要创建的实现)。谢谢您的回答——我怀疑是这样的。但是,接口有什么帮助,因为您无法在接口中定义变量。您将实现一个接口(公共类AppMenu实现IAppMenu)。然后,您必须拥有接口中定义的所有函数。在这些函数的主体中,您必须“平台嗅探”(if(Capabilities.os.search(“iOS”)>-1)..@user1834364您确实可以在接口中定义getter/setter(function get property():String
)。但是在您的情况下,我会尝试用另一种方式定义契约(因为在一种情况下,您需要有NativeMenu
和另一种NativeMenuItem
)这里的关键是契约式设计,IAppMenu
的具体实现需要什么?可能只是接收初始化数据,并在用户与菜单项交互时发送一些事件。通过操作系统的一个实现,我真正的意思是让WindowsAppMenu实现IAppMenu
和MacOSAppMenu可以使用编译器变量,例如:if(CONFIG::Var){