![]() |
|
||||||||||
|
|||||
|
Привет! Друзья, помогите разобраться с такой вот ситуёвиной: в классе не работает setInterval (), а точнее не создается экземпляр другого класса.
import mx.utils.Delegate;
class LevelOne {
private var mc:MovieClip;
private var n:Number;
private var interval:Number;
private var rapid:Number = 100;
public function LevelOne (_mc:MovieClip){
mc = _mc;
mc.onMouseDown = Delegate.create(this, shoot);
mc.onMouseUp = Delegate.create(this, finish);
}
private function shoot ():Void{
n = setInterval (create, rapid);
}
private function finish ():Void{
clearInterval (n);
}
private function create ():Void{
trace ("kkk"); //этот трэйс срабатывает
var bul:Shot = new Shot (mc); //экземпляр на сцене не появляется
}
}
Я думаю что это проблемы с "малопонятной" областью видимости этого самого setInterval ()... |
|
|||||
|
[+1 18.03.08]
Регистрация: Nov 2006
Сообщений: 223
|
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
На экземпляр класса, то бишь на экземпляр LevelOne.
|
|
|||||
|
[+1 18.03.08]
Регистрация: Nov 2006
Сообщений: 223
|
На текущий объект. В данном случае - на объект класса LevelOne.
Функция-то у тебя вызывалась, и конструктор вызывался, то вот поле mc не находилось. Попробуй в своём первоначальном варианте написать: private function create ():Void{
trace ("this: "+this);
trace ("this.mc: "+this.mc);
trace ("mc: "+mc);
var bul:Shot = new Shot (mc);
}
Затем поменяй setInterval так, как было сказано выше, и обнаружишь, что this теперь показывается как [Object], а this.mc и mc - это синонимы. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:23. |
|
|
« Предыдущая тема | Следующая тема » |
|
|