你知道 ActionScript 是否支持联合类型吗?例如,类似的东西:
function foo(x:ClassA Union classB) {
//x is classA or classB
//do something
}
提前致谢
你知道 ActionScript 是否支持联合类型吗?例如,类似的东西:
function foo(x:ClassA Union classB) {
//x is classA or classB
//do something
}
提前致谢
Actionscript 3 不支持 c++ 风格的 mixin 类层次结构。
As3 而是使用在许多面向对象语言中使用的接口方法。
接口通常是功能的抽象模板,允许在与类层次结构无关的对象之间进行通信。
如:
public interface IBox{
function addContentToBox(contentName:String, content:*) Boolean;
function boxHasContent(contentName:String): Boolean;
function getContentFromBox(contentName:String): *;
}
当你在 as3 中定义一个类时,如果你想让它实现你写的 IBox 接口
class YourClass extends anotherClass implements IBox {
(仅在扩展另一个类时才需要扩展 anotherClass)
现在您必须为YourClass中IBox中声明的函数编写代码。
那么问题是什么?嗯,首先
a = new YourClass(parameters etc);
if(a is YourClass)trace('YIPPE');
if(a is IBox)trace('YAY');
你现在有了 YIPPE YAY 的踪迹。
(xxx is IBox) 对所有实现 IBox 的类的所有实例都为真。
您可以将任何具有实现 IBox 的类的不相关对象传递给期望 IBox 的函数。
有关详细信息,请参阅Adobe as3 接口文档。
我希望这有帮助。
最接近的方法是拥有一个基类A
并从中派生两个类B
和C
. 然后您可以将其中一个B
或C
实例传递给函数foo
。
class classA {}
class classB extends classA {}
class classC extends classA {}
function foo(x:ClassA)
{
if(x is classB)
trace("x is classB");
else if (x is classC)
trace("x is classC");
}
var c:ClassC = new ClassC();
foo(c);
尽管我不建议检查类的类型并基于此执行代码,但使用接口可能会帮助您,但我们需要知道您要做什么。