2

ステージ上のムービー クリップを参照する関数を取得できません ( thatsRight)。関数の外で参照して初期設定しvisible = false、関数内でthis.Correctvisible = true に設定することはできますが、別の関数を呼び出しthis.removeAndCheckてステージ上の同じムービー クリップを参照することはできません。エラーが発生します

「TypeError: undefined はオブジェクトではありません ('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 フラッシュ アセットを html5 キャンバス アセットに変換する作業の一部です。これについての助けをいただければ幸いです。

4

2 に答える 2

0

@Sammeer is correct, this is a scoping issue. Typically I get around this with a Function.bind

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

You might also see local variable binding like this:

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

Here is some further reading.

于 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 に答える