2016-03-22 9 views
2

Ich habe Probleme, eine Funktion zum Referenzieren eines Movieclips auf der Bühne zu erhalten (thatsRight). Ich kann es außerhalb einer Funktion referenzieren, um es zuerst visible = false und innerhalb der this.Correct Funktion auf sichtbar = True, aber eine andere Funktion aufrufen this.removeAndCheck kann nicht den gleichen Movieclip auf der Bühne verweisen. Ich bekomme den FehlerProblem beim Verweisen auf ein Objekt aus der Funktion - Adobe animiert Canvas

"TypeError: undefined is not an object (evaluating 'this.thatsRight.visible = false')"

auf der Linie in der this.removeAndCheck-Funktion. Das ergibt für mich keinen Sinn. Eine Funktion kann auf den Movieclip verweisen, eine andere jedoch nicht. Dieser Code befindet sich im Frame.

Ich habe auch Probleme mit this.CheckAllCorrect() aufgerufen werden. this.CheckAllCorrect() ist auch auf einer, aber auf einer anderen Aktionsebene.

Dies ist Teil einer Konvertierung von verschiedenen as3 Flash-Assets zu HTML5-Canvas-Assets mit Adobe Animate CC. Jede Hilfe mit diesem würde sehr geschätzt werden.

+0

Nicht sicher, wie Canvas auf Adobe Animate funktioniert, aber ich denke, Sie sollten dieses "Argument" in der Methode settimeout übergeben und dann dort darauf zugreifen. Zum Beispiel setTimeout (this.removeAndCheck, 3000, this) und this.removeAndCheck = function (value). "Wert" -Parameter enthält Verweis auf "dies" –

+0

FYI das ist nicht AS3, es ist nur JS. Ich entferne das '[actionscript-3]' - Tag. – Aaron

Antwort

0

@Sammeer ist richtig, das ist ein Problem Bereich. Normalerweise komme ich um diese mit einem Function.bind

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

Sie auch lokale Variable Bindung so sehen könnte:

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

Hier einige further reading.