|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Отсутствует воспроизведение если обращение к треку происходит не в главном классе
Здравствуйте.
Я в библиотеке (SWC) храню все музыкальные эффекты. В главном приложение я загружаю эту библиотеку и когда пытаюсь обратиться к какому-либо треку из главного класса, то обращение происходит, но когда я пытаюсь обратиться через другой класс (экземпляр которого делается в главном классе), то возникает ошибка, но не сразу, а при воспроизведение трека: "Невозможно воспроизвести... |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
То есть, это не нормально? Должно работать?
"ArgumentError: Error #2068: Недопустимый звуковой файл." package massacre { import flash.events.Event; import flash.display.MovieClip; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; public class Condition extends MovieClip { public static var coordinateX:Number = 500; public static var coordinateY:Number = 700; public static var absenceReceive:Boolean = true; //Отсутствие приёма: private var soundAbsenceReceivePlaying:Boolean = false; //Воспроизведение звука отсутствия приёма происходит\не происходит: //ИНДИКАТОРЫ: private var indicatorAbsenceReceive:MovieClip; //Индикатор отсутствия приёма: //ЗВУКИ: private const SOUNDABSENCERECEIVE:Sound = new SoundAbsenceReceive(); //Звук отсутствия приёма: private var soundChannel:SoundChannel = new SoundChannel(); public function Condition(indicatorAbsenceReceiveUrl:MovieClip):void { init(indicatorAbsenceReceiveUrl); } private function init(indicatorAbsenceReceiveUrl:MovieClip):void { indicatorAbsenceReceive = indicatorAbsenceReceiveUrl; //Индикатор отсутствия приёма: addEventListener(Event.ENTER_FRAME,condition); } private function condition(event:Event):void { //Если приём отсутствует, то: if(absenceReceive) { indicatorAbsenceReceive.gotoAndStop(2); //Если воспроизведение звука отсутствие приёма не происходит, то: if(!soundAbsenceReceivePlaying) { trace("Приём отсутствует!"); soundAbsenceReceivePlaying = true; soundChannel = new SoundChannel(); soundChannel = SOUNDABSENCERECEIVE.play(); soundChannel.soundTransform = new SoundTransform(Settings.VOLUMESOUNDEFFECTS); soundChannel.addEventListener(Event.SOUND_COMPLETE,playingSoundAbsenceReceive); } } else { indicatorAbsenceReceive.gotoAndStop(1); } } private function playingSoundAbsenceReceive(event:Event):void { trace("Воспроизведение звука отсутствие приёма закончилось!"); soundAbsenceReceivePlaying = false; const SOUND:* = event.target; SOUND.removeEventListener(Event.SOUND_COMPLETE,playingSoundAbsenceReceive); } } } Последний раз редактировалось Dip52; 10.12.2013 в 23:13. |
|
|||||
Цитата:
Приведенный код так же ничего не проясняет. Одно можно сказать точно, отсюда нужно убрать слушатель ENTER_FRAME. Не правильно делать такие вещи в каждом кадре. п.с. К ошибке это конечно отношения не имеет, но почему параметр с типом данных MovieClip называется indicatorAbsenceReceiveUrl? URL может быть строкой, но никак не мувиклипом |
|
|||||
Регистрация: Aug 2012
Сообщений: 297
|
Я нашёл ошибку. У меня в приложение есть MovieClip. В нём есть два слоя: в одном текстовое поле, в другом присваивание этому текстовому полю значения, которое берётся из статической переменной из класса Condition (класс, где я и пытался воспроизвести трек).
Получается, что экземпляр (или как это называется в данном случае) класса создавался во время обращения к статическим переменным этого класса, а в этот момент, возможно, не было связи с библиотекой. Последний раз редактировалось Dip52; 12.12.2013 в 03:49. |
Часовой пояс GMT +4, время: 06:40. |
|
« Предыдущая тема | Следующая тема » |
|
|