PDA

Просмотр полной версии : Функция класса не видит свойства класса


Omar2002
03.05.2008, 15:04
Не знаю как более правильно сформулировать вопрос, но суть такая:
Есть класс
class Player1 {
private var sound:Sound; //Собственно звук
private var looped:Boolean = true; //Зациклен ли текущий файл

function Player1(track:String, loop:Boolean){
this.sound = new Sound();
this.sound.onLoad = this.isLoade;
this.sound.onSoundComplete = this.isEnded;
this.looped = loop;
this.sound.loadSound("/sound/"+track, true);
}

function isLoade(success:Boolean) {
if (success) {
this.sound.start(0,99999999999);
this.sound.setVolume(50);
}
}

function isEnded(){
if(this.looped){
this.sound.start();
}
}
}


В общем функция isEnded() почему-то не видит this.looped.
Не могу понять в чем дело. Если я все правильно понимаю, то строчка
this.sound.onSoundComplete = this.isEnded; - должна присваивать в качестве функции обработчика события класса sound ссылку на функцию isEnded класса Player1. Или происходит присвоение функции, и она уже не является функцией класса Player1?
Как можно решить эту простую задачу.
Еще раз поясню: Надо при окончании звука проверить свойство looped, и в случае looped==treu; стартовать звук снова.

Molecula
03.05.2008, 15:31
Вашу переменную не видно, используйте как минимум Делегат:
import mx.utils.Delegate;
...
sound.onSoundComplete = Delegate.create(this, isEnded);

Omar2002
03.05.2008, 16:22
Респект!
Теперь все работает :)