我有以下类定义:
var gameEngine = WinJS.Namespace.define("GameEngine", {
interaction: WinJS.Class.define(
function() {},
{
destination: 0,
currentXPos: 0,
handleTouch: function handleTouch(event) {
this.destination = event.x;
console.log("New destination: " + this.destination);
}
}
),
...
我正在尝试使用handleTouch
函数:
WinJS.Namespace.define("drawScreen", {
DrawScreen: WinJS.Class.define(function DrawScreen() {
canvas.addEventListener("MSPointerUp", gameEngine.interaction.handleTouch, false);
...
问题似乎是gameEngine.interaction.handleTouch
未定义。很明显,我没有正确宣布或调用interaction
类 - 但是看文档here,我看不出我做错了什么。
答案 0 :(得分:0)
WinJS.Class.define(
的第一个参数是构造函数,第二个参数是成员属性和函数。试试这个:
interaction: WinJS.Class.define(
function() {},
{
// initialize your class here
},
{
destination: 0,
currentXPos: 0,
handleTouch: function handleTouch(event) {
this.destination = event.x;
console.log("New destination: " + this.destination);
}
}
),
...
答案 1 :(得分:0)
由于您已在实例声明中将gameEngine.interaction
定义为具有您的成员的类,因此您需要首先实例化它的实例。因此,你需要做这样的事情:
var gameInteraction = new gameEngine.interaction();
canvas.addEventListener("MSPointerUp", gameInteraction.handleTouch, false);
如果直接在Namespace中而不是在Class中定义所有interaction
类成员,则不需要实例化它。另一种方法是直接在命名空间中实例化类,如:
var gameEngine = WinJS.Namespace.define("GameEngine", {
interaction: new WinJS.Class.define(
...