类型/类实例上的开关/案例?

red*_*ory 1 actionscript-3 switch-statement

我有一组不同的MovieClip:

Pink
Yellow
Red
Run Code Online (Sandbox Code Playgroud)

我创建了一个项目

item = new Pink();
item = new Red();
Run Code Online (Sandbox Code Playgroud)

等等...

如何编写一个开关盒来查看我有哪个MovieClip?

switch (item) {
 case Pink:
 // do something
 break;

 case Red:
 // do something
 break;
}
Run Code Online (Sandbox Code Playgroud)

我只知道如何为字符串编写开关案例...

Dea*_*rth 5

您可以将类名作为字符串获取并按照通常使用此方法的方式进行切换...

switch (getQualifiedClassName(item)) {
 case "Pink":
 // do something
 break;

 case "Red":
 // do something
 break;
}
Run Code Online (Sandbox Code Playgroud)

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/package.html#getQualifiedClassName()


zzz*_*Bov 5

简单回答:不要.

Pink并且RedColor其实如此做Color有一个函数:

interface IColor
{
  public function doSomething():void;
}
Run Code Online (Sandbox Code Playgroud)

并具有PinkRed扩展功能:

class Pink extends MovieClip implements IColor
{
  ...
  public override function doSomething():void
  {
    //different code
  }
}

class Red extends MovieClip implements IColor
{
  ...
  public override function doSomething():void
  {
    //more different code
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在你的代码中你可以调用:

item.doSomething();
Run Code Online (Sandbox Code Playgroud)

对于这两种情况,它都会做正确的事情.