gpt4 book ai didi

javascript - 在 Dart JS 互操作中引用 "this"

转载 作者:搜寻专家 更新时间:2023-11-01 04:36:22 27 4
gpt4 key购买 nike

我想在 Dart 中实现以下代码:

var HelloWorldScene = cc.Scene.extend({
onEnter:function () {
this._super();
}
});

我的 Dart 实现如下所示:

class HelloWorldScene {
HelloWorldScene() {
var sceneCollectionJS = new JsObject.jsify({ "onEnter": _onEnter});

context["HelloWorldScene"] = context["cc"]["Scene"].callMethod("extend", [sceneCollectionJS]);
}

void _onEnter() {
context["this"].callMethod("_super");
}
}

不幸的是,我在运行代码时遇到了以下错误:

The null object does not have a method 'callMethod'

在下面一行:

context["this"].callMethod("_super", []);

context["this"] 似乎为空,所以我的问题是:如何从 Dart 引用“this”变量?

更新 1:完整的示例代码可以在 github 上找到: https://github.com/uldall/DartCocos2dTest

最佳答案

您可以使用 JsFunction.withThis(f) 捕获 Js this .使用该定义,将添加一个附加参数作为第一个参数。因此你的代码应该是:

import 'dart:js';

class HelloWorldScene {
HelloWorldScene() {
var sceneCollectionJS =
new JsObject.jsify({"onEnter": new JsFunction.withThis(_onEnter)});

context["HelloWorldScene"] =
context["cc"]["Scene"].callMethod("extend", [sceneCollectionJS]);
}

void _onEnter(jsThis) {
jsThis.callMethod("_super");
}
}

关于javascript - 在 Dart JS 互操作中引用 "this",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30163462/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com