クラス内でsetInterval()を使う時の注意点
Actionscript3.0のご時勢に、いまさらFlash8やっております。ちょっとハマったので覚書。
クラス内でsetInterval()を使って、クラス内のメソッドを実行すると、クラスのプロパティが読めないんです。
困ったときのGoogle先生。(最近はwikipedia,google,youtubeでこと足りますね)
オンラインヘルプを見るとこのようになっておるではないか。以下オンラインヘルプ引用。
setInterval() をクラス内で使用する場合は、この関数を呼び出すときに this キーワードを使用していることを確認する必要があります。このキーワードを使用しないと、setInterval() 関数がクラスメンバーにアクセスできません。
setInterval()のコールバック関数に、this参照が渡らないのですね。
もっと探りを入れると、こんな解決法もあるんです。
class hoge{ var intervalID:Number; public function hoge(){ var self=this; intervalID = setInterval(function(){self.methodHoge()},100); } public function methodHoge() { clearInterval(intervalID); //処理 }
いい手です。