【发布时间】:2025-12-31 04:10:12
【问题描述】:
所以,我创建了包含所有静态方法的“接口类”,我希望将其公开给hscript 脚本。它看起来像这样:
package com.application.interfaces.Terrain;
import com.application.TerrainCore
class Terrain {
private static var terrain:TerrainCore;
public static function _init(inTerrain:TerrainCore):Void {
terrain = inTerrain;
}
public static function test(s:Int):Void {
terrain.test(s);
}
}
问题是,我需要以某种方式设置terrain 对象,但我不希望它暴露给脚本。我用
var interp = new Interp();
var module = Type.resolveClass("com.application.interfaces.Terrain");
interp.variables.set("Terrain", module)
这个想法是在hscript.Interp 中覆盖方法call,因此它不会执行任何名为_init 的方法,但我不知道该怎么做。原来的call 方法是这样的:
function call( o : Dynamic, f : Dynamic, args : Array<Dynamic> ) : Dynamic {
return Reflect.callMethod(o,f,args);
}
【问题讨论】: