我遇到了一个声明为null
变量的AS3函数,如:
public var edgeWeights:Function = null;
我不知道如何使用此功能将null
更改为其他值(例如,2或3之类的数字)。我认为像cs.edgeWeights = 2
这样的东西可能会起作用,但这会产生编译错误,cs.edgeWeights(2);
我相信这些是AS3中的匿名函数,我确实对它们进行了一些研究,但无法找到解决这种情况的方法。
答案 0 :(得分:3)
public var edgeWeights:Function = null;
此表示法表示声明edgeWeights
类型的变量Function
。在Actionscript Function
中是一个对象,可以设置为null
。
要使用它,您需要将此变量设置为某个功能。例如:
edgeWeights = function(a:int,b:int):int { return a+b }
或edgeWeights = Math.sin
。
你应该在那里设置什么功能取决于你的具体情况。
答案 1 :(得分:0)
如果您认为声明edgeWeights
的班级是Widget
:
protected var widget:Widget; protected function createWidget():void { widget = new Widget(); widget.edgeWeights = widgetCallback; } //signature would need to match what the Widget //actually expects this callback to do protected function widgetCallback():void { trace('hi from widget callback'); }
请注意,拥有公共回调变量并且不提供默认实现可能是不好的做法,因此如果您有权访问源代码,则应该修复它。
答案 2 :(得分:0)
给定任何功能:
public function someFunction()
{
...
}
你可以创建一个“指针”:this.edgeWeights = someFunction;
(是的,没有()
)
稍后您只需使用:this.edgeWeights();
,即可拨打someFunction()
。