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)
という名前のメソッドを実行しないようにメソッドcall
をオーバーライドするというアイデアでしたが、その方法がわかりません。元の方法は次のようになります。hscript.Interp
_init
call
function call( o : Dynamic, f : Dynamic, args : Array<Dynamic> ) : Dynamic {
return Reflect.callMethod(o,f,args);
}