0

我正在使用游戏循环,并试图通过根据游戏状态将各种方法分配给 Function 类型的变量来处理用户输入。

我将一个名为 InputState1 的已定义函数分配给我的函数变量 inputFunction:

var inputFunction:Function = InputState1;

其中 InputState1 是:

public function InputState1():void
{
    // input logic
}

并在游戏循环的更新方法中调用 inputFunction:

override protected function update(timeDelta:Number):void
{
    trace(inputFunction);
    inputFunction();
}

当我跟踪 inputFunction 时,它返回一个空函数。

是否可以将命名函数分配给函数变量,如果可以,我将如何正确执行此操作?

解决方案:我正在调用我的函数变量调用方法,而不仅仅是调用函数。现在可以了。

4

2 回答 2

0

我从您的论点中了解到,您希望识别游戏状态并根据它采取行动,那么您总是可以定义一个保存游戏状态值的字符串,该值会随着游戏状态的变化而更新,并制作一个返回该字符串的函数, (或直接比较具有已定义状态的字符串)

var gameState:String="initial";

override protected function update(timeDelta:Number,gameState:String):void
{
  gameState="newstate"; //depending upon your condition requirement
}

if(gameState="requredState"){
    //do required stuff
}
于 2013-08-16T19:12:31.030 回答
0

问题是我正在调用函数变量的调用方法,而不仅仅是调用函数。它现在可以工作,我已将问题中的代码编辑为正确的版本。

于 2013-08-19T20:55:42.037 回答