我有一个名为LinkGroup的类,其中包含一些游戏对象。我调用Rotate为这些对象设置一些旋转变量。每当我的游戏达到更新循环时,我都会根据旋转变量旋转对象。如果它们旋转的足够多,我会触发一个onComplete回调。

以下代码有效...

public void Rotate(){
    _currentRotation = _0;
    _targetRotation = 180; //degrees
    _rotationSpeed = 50;

    try{
        _onComplete = LinkGroup.class.getDeclaredMethod("rotateComplete", null);
    }
    catch(Exception ex){

    }
}

...但是这很丑。

我不喜欢声明方法rotateComplete并通过字符串将其手动链接到Rotate。在C#中是否有类似于匿名函数的东西,所以我可以在Rotate方法中声明RotateComplete方法?

对于奖励积分,是否有更好的方法来实现“getDeclaredMethod”所需的异常处理?简洁是一种偏爱。

最佳答案

根据我的理解,我相信您每当旋转某个游戏对象时,便会尝试在onRotateComplete()类中调用LinkGroup方法。您可以使用Java Swing用于处理按钮单击或其他事件的模式:可以通过以下方式完成:

定义接口

interface IRotateHandler {
    public void onRotateComplete();
}

Rotate()更改为Rotate(IRotateHandler handler),然后在LinkGroup类中,您可以像这样调用游戏对象。
gameObject.Rotate(new IRotateHandler() {
    public void onRotateComplete() {
        /* do your stuff!
    }
}

08-04 07:02