2

我无法获得引用舞台上影片剪辑的函数 ( thatsRight)。我可以在函数外部引用它以将其初始设置visible = false并在this.Correct函数内部将其设置为可见 = true,但调用另一个函数this.removeAndCheck无法引用舞台上的同一影片剪辑。我得到错误

“TypeError:未定义不是一个对象(评估'this.thatsRight.visible = false')”

在 this.removeAndCheck 函数中就行了。这对我来说没有意义。一个函数可以引用影片剪辑,但另一个不能。此代码在框架上。

this.thatsRight.visible = false;

this.Correct = function() {

  this.thatsRight.visible = true;

  setTimeout(this.removeAndCheck, 3000)
}


this.removeAndCheck = function() {
  this.thatsRight.visible = false;
  this.CheckAllCorrect();
  }

我也有 this.CheckAllCorrect() 被调用的问题。 this.CheckAllCorrect()也是从一个但在另一个动作层上。

这是使用 adobe animate CC 将不同的 as3 flash 资源转换为 html5 canvas 资源的一部分。对此的任何帮助将不胜感激。

4

2 回答 2

0

@Sammeer 是正确的,这是一个范围界定问题。通常我会用Function.bind

setTimeout(this.removeAndCheck.bind(this), 3000);

您可能还会看到像这样的局部变量绑定:

var that = this;
setTimeout(function() { that.removeAndCheck(); }, 3000);

这是一些进一步的阅读

于 2016-03-22T15:22:00.313 回答
0

这是this变量值的范围问题,这是 javascript 中的常见错误。要完全避免这些问题,只需使用箭头函数:

this.thatsRight.visible = false;

this.removeAndCheck = () => {
  this.thatsRight.visible = false;
  this.CheckAllCorrect();
}

this.Correct = () => {
  this.thatsRight.visible = true;
  setTimeout(this.removeAndCheck, 3000)
}
于 2021-11-26T12:07:45.343 回答