将不同的类对象传递给函数并在Haxe中获取它的属性?

时间:2017-11-10 20:53:03

标签: haxe openfl

将不同的类对象传递给函数并获取它的属性?

例如:

我有两个不同的类对象:

screenA = new ScreenA();
screenB = new ScreenB();

我传递了补间中的对象:

switch (state)
{

    case States.SCREEN_A:
        {
            Actuate.tween(screenA, 0.6, {alpha: 1} ).ease(Sine.easeIn).autoVisible (true).onComplete(onComp, [screenA]);
        }
    case States.SCREEN_B:
        {
            Actuate.tween(screenB, 0.6, {alpha: 1} ).ease(Sine.easeIn).autoVisible (true).onComplete(onComp, [screenB]);
        }
}

现在我想在补间完成时访问传递对象的方法。

Tween正在传递对象,但我无法将其强制转换为函数以获取对象方法。

private function onComp(screen:?)
{
    screen.load();
}

编译器总是要求输入类型。我已经尝试了Dynamic / Any,但后来说“找不到加载方法”,如果我在函数中传递了没有任何类型参数的对象,那么它将它作为对象而不是类对象

2 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点,但有一种方法是使用通用界面:

<script> $( document ).ready(function() { $('#CO').css({fill: '#ff0000'}); }); </script>

然后你的功能是:

class ScreenA implements OnTweenComplete { ... }
class ScreenB implements OnTweenComplete { ... }

interface OnTweenComplete {
  public function on_tween_complete();
}

或者,也许,使用private function onComp(screen:OnTweenComplete) { screen.on_tween_complete(); } 对其进行类型检查并投射它:

Std.is

答案 1 :(得分:0)

在这个确切示例中,您可以在load回调中使用onComplete来简化代码:

Actuate.tween (screenA, 0.6, { alpha: 1 }).ease (Sine.easeIn).onComplete (screenA.load);