Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отсутствует воспроизведение если обращение к треку происходит не в главном классе (http://www.flasher.ru/forum/showthread.php?t=205593)

Dip52 10.12.2013 21:25

Отсутствует воспроизведение если обращение к треку происходит не в главном классе
 
Здравствуйте.

Я в библиотеке (SWC) храню все музыкальные эффекты. В главном приложение я загружаю эту библиотеку и когда пытаюсь обратиться к какому-либо треку из главного класса, то обращение происходит, но когда я пытаюсь обратиться через другой класс (экземпляр которого делается в главном классе), то возникает ошибка, но не сразу, а при воспроизведение трека: "Невозможно воспроизвести...

caseyryan 10.12.2013 22:13

наверное что-то сломалось

Dip52 10.12.2013 23:02

Цитата:

Сообщение от caseyryan (Сообщение 1154790)
наверное что-то сломалось

То есть, это не нормально? Должно работать?

"ArgumentError: Error #2068: Недопустимый звуковой файл."


Код AS3:

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);
                }
        }
}


caseyryan 11.12.2013 08:03

Цитата:

То есть, это не нормально? Должно работать?
То есть когда нормально, тогда все должно работать. Тут вряд ли найдутся телепаты, способные выявить ошибку основываясь на такой информации.

Приведенный код так же ничего не проясняет.
Одно можно сказать точно, отсюда нужно убрать слушатель ENTER_FRAME. Не правильно делать такие вещи в каждом кадре.

п.с. К ошибке это конечно отношения не имеет, но почему параметр с типом данных MovieClip называется indicatorAbsenceReceiveUrl? URL может быть строкой, но никак не мувиклипом

Dip52 12.12.2013 02:39

Я нашёл ошибку. У меня в приложение есть MovieClip. В нём есть два слоя: в одном текстовое поле, в другом присваивание этому текстовому полю значения, которое берётся из статической переменной из класса Condition (класс, где я и пытался воспроизвести трек).
Получается, что экземпляр (или как это называется в данном случае) класса создавался во время обращения к статическим переменным этого класса, а в этот момент, возможно, не было связи с библиотекой.


Часовой пояс GMT +4, время: 06:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.