我有一个名为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!
}
}