Просмотр полной версии : Отсутствует воспроизведение если обращение к треку происходит не в главном классе
Здравствуйте.
Я в библиотеке (SWC) храню все музыкальные эффекты. В главном приложение я загружаю эту библиотеку и когда пытаюсь обратиться к какому-либо треку из главного класса, то обращение происходит, но когда я пытаюсь обратиться через другой класс (экземпляр которого делается в главном классе), то возникает ошибка, но не сразу, а при воспроизведение трека: "Невозможно воспроизвести...
caseyryan
10.12.2013, 22:13
наверное что-то сломалось
наверное что-то сломалось
То есть, это не нормально? Должно работать?
"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);
}
}
}
caseyryan
11.12.2013, 08:03
То есть, это не нормально? Должно работать?
То есть когда нормально, тогда все должно работать. Тут вряд ли найдутся телепаты, способные выявить ошибку основываясь на такой информации.
Приведенный код так же ничего не проясняет.
Одно можно сказать точно, отсюда нужно убрать слушатель ENTER_FRAME. Не правильно делать такие вещи в каждом кадре.
п.с. К ошибке это конечно отношения не имеет, но почему параметр с типом данных MovieClip называется indicatorAbsenceReceiveUrl? URL может быть строкой, но никак не мувиклипом
Я нашёл ошибку. У меня в приложение есть MovieClip. В нём есть два слоя: в одном текстовое поле, в другом присваивание этому текстовому полю значения, которое берётся из статической переменной из класса Condition (класс, где я и пытался воспроизвести трек).
Получается, что экземпляр (или как это называется в данном случае) класса создавался во время обращения к статическим переменным этого класса, а в этот момент, возможно, не было связи с библиотекой.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.