Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.237.15.145] |
|
Сообщ.
#1
,
|
|
|
Добрый день!
Столкнулась с такой проблемой: Есть главная форма(main) в которую подгружаю swf файл (albums). Отдельно сам файл albums работает, но при подгрузке через главную выдает ошибку: TypeError: Error #2007: Параметр child не должен быть равен нулю. at flash.display::DisplayObjectContainer/addChildAt() at fl.controls::BaseButton/drawBackground() at fl.controls::LabelButton/draw() at fl.core::UIComponent/callLaterDispatcher() Код файла main: [ import flash.display.Loader; //класс для загрузки внешнего содержимого import flash.net.URLRequest; //класс для создания гиперссылок import flash.utils.*; // для работы компонента ProgressBar import fl.controls.ProgressBar;// для динамического создания компонента ProgressBar import fl.controls.ProgressBarDirection; import fl.controls.ProgressBarMode; import flash.events.Event; var url :URLRequest[td] = new URLRequest(); // для ссылки на подгружаемый swf var ploader:ProgressBar = new ProgressBar(); this.ploader.move(500,300); // перемещение в нужную точку this.addChild(ploader); // добавление в список отображения this.ploader.direction = ProgressBarDirection.RIGHT; ploader.mode = ProgressBarMode.MANUAL; ploader.visible = false; var mcLoader:Loader = new Loader(); mcLoader.x = 350; // перемещение в нужную точку mcLoader.y = 150; addChild(mcLoader); // добавление в список отображения //Добавление обработчиков событий, связанных с загрузкой внешнего содержимого mcLoader.contentLoaderInfo.addEventListener(Event.OPEN, loadOpen); mcLoader.contentLoaderInfo.addEventListener(Event.INIT, loadInit); mcLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress); mcLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete); function loadOpen(_event:Event) { ploader.visible = true; setChildIndex(ploader, numChildren - 1); } function loadInit(_event:Event) { mcLoader.content.visible = false; } function loadProgress(_event:ProgressEvent) // отображаем процесс загрузки { // в компоненте ProgressBar ploader.setProgress(_event.bytesLoaded, _event.bytesTotal); } function loadComplete(_event:Event) // по завершении загрузки содержимого { ploader.visible = false; // скрываем ProgressBar mcLoader.content.visible = true; // отображаем контент } url.url="galery.swf"; mcLoader.load(url); //обработчики событий нажатия на кнопки alb.addEventListener(MouseEvent.CLICK, albClick);//обработчик события для песен function albClick(_event:Event) //функция обработчик нажатия кнопки главная { mcLoader.unload(); url.url="albums.swf" mcLoader.load(url); } ] Файл albums import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.ID3Info; import fl.controls.Slider; import fl.events.SliderEvent; import flash.media.SoundTransform; import flash.media.SoundMixer; this.stop(); var transf : SoundTransform = new SoundTransform(); // переменная для трансформации звука //текущая позиция звука var pos:Number=0; //общее количесвто файлов var count:Number; bPause.visible=false; // XML-документ var list:XML = new XML(); var childs:XMLList = new XMLList(); // объект для хранения всех дочерних узлов документа var XML_URL:String; if (al==1) { this.XML_URL = "listcrazy.xml";// адрес документа } if (al==2) {this.XML_URL = "list.xml";// адрес документа } if (al==3) { this.XML_URL = "listhumanity.xml";// адрес документа } if (al==4) { this.XML_URL = "listbest.xml";// адрес документа } var myXMLURL:URLRequest = new URLRequest(XML_URL); // гиперссылка var myLoader:URLLoader = new URLLoader(myXMLURL); // загрузчик текстового содержимого var time:Number = 0;// // загружаем в него XML-документ var musicURL:URLRequest = new URLRequest(); // гиперссылка для mp3-файла var snd:Sound = new Sound(); // объект-звук var channel :SoundChannel = new SoundChannel(); // звуковой канал myLoader.addEventListener("complete", xmlLoaded); // окончание загрузки содержимого в загрузчик function xmlLoaded(_event:Event):void// окончание загрузки внешнего XML-документа { this.list = XML(myLoader.data); // записываем загруженный документ в объект XML this.childs = this.list.child("item"); // в childs заносим все дочерние узлы корневого узла XML-документа var item:XML; // временный узел документа count=0; // временный узел документа //обнуление количества файлов //count=0; // цикл перебора всех дочерних узлов // цикл перебора всех дочерних узлов for each(item in this.childs) {this.count++; /* muzlist - экземпляр компонента List item.attributes() - все атрибуты тега - текущего рассматриваемого узла. объект класса XMLList item.attributes()[0] - значение первого атрибута (ссылка на файл) item.attributes()[1] - значение второго атрибута (название композиции) */ this. musiclist.addItem({label:item.attributes()[1], data:item.attributes()[0]}); //увеличиваем число файлов count++ this.musiclist.selectedIndex = 0; } }// по умолчанию выбран первый элемент списка vol.addEventListener(SliderEvent.CHANGE, volHandler);//добавление функции-прослушивателя события //перемещения ползунка слайдера vol pan.addEventListener(SliderEvent.CHANGE, panHandler) vol.value = transf.volume;//определяем значение ползунка для громкости pan.value = transf.pan;//определяем значение ползунка для панорамирования this.bPlay.addEventListener(MouseEvent.CLICK, playClick); // обработчик события нажатия кнопки play this.bPause.addEventListener(MouseEvent.CLICK, PauseClick); // обработчик события нажатия кнопки pause this.btforward.addEventListener(MouseEvent.MOUSE_DOWN,fo); this.btback.addEventListener(MouseEvent.MOUSE_DOWN,ba); this.bStop.addEventListener(MouseEvent.CLICK, StopClick); this.baaack.addEventListener(MouseEvent.CLICK, baaackClick); function baaackClick(_event:MouseEvent) { if (this.channel) // если звуковой канал задан (звук уже воспроизводился хотя бы раз) { this.channel.stop(); // останавливаем воспроизведение звука в канале } this.gotoAndStop(1); } function playClick(_event:MouseEvent)// функция-обработчик события при нажатии на кнопку play { if (this.channel) // если звуковой канал задан (звук уже воспроизводился хотя бы раз) { this.channel.stop(); // останавливаем воспроизведение звука в канале } this.snd = new Sound(); // обновляем объект чтобы можно было загрузить новый mp3-файл this.musicURL.url = this.musiclist.selectedItem.data; // ссылку на mp3-файл берем из свойства data выбранной строки в списке файлов this.snd.load(musicURL); // загружаем mp3-файл this.channel = this.snd.play(time,0,transf); // воспроизведение this.channel.addEventListener(Event.SOUND_COMPLETE, playComplete); this.bPlay.visible=false; this.bPause.visible=true; } function StopClick(_event:MouseEvent)//функция-обработчик события при нажатии на кнопку stop { this.channel.stop(); // останавливаем воспроизведение звука в канале this.time=0; this.bPlay.visible=true; this.bPause.visible=false; } function PauseClick(_event:MouseEvent)//функция-обработчик события при нажатии на кнопку pause { this.time = channel.position;//помещаем в переменную значение времени на которой проигрывается песня this.channel.stop();//стоп песня this.bPlay.visible=true; this.bPause.visible=false; } function fo(_ev:Event)//вперед на следующую композицию { if (this.channel) // если звуковой канал задан (звук уже воспроизводился хотя бы раз) { this.channel.stop(); // останавливаем воспроизведение звука в канале } this.snd = new Sound(); if (this.musiclist.selectedIndex==count-1) {this.musiclist.selectedIndex=0;} else { this.musiclist.selectedIndex++; } this.musicURL.url = musiclist.selectedItem.data; this.snd.load(musicURL); //воспроизведение с полученной позиции this.channel = this.snd.play(time,0,transf); this.channel.addEventListener(Event.SOUND_COMPLETE, playComplete); } function ba(_ev:Event) //назад к предыдущей композиции { if (this.channel) // если звуковой канал задан (звук уже воспроизводился хотя бы раз) { this.channel.stop(); // останавливаем воспроизведение звука в канале } this.snd = new Sound(); if (this.musiclist.selectedIndex>0) this.musicURL.url = musiclist.selectedItem.data; this.snd.load(musicURL); //воспроизведение с полученной позиции this.channel = snd.play(0,0,transf); this.channel.addEventListener(Event.SOUND_COMPLETE, playComplete); } function volHandler(event:SliderEvent):void//функция-прослушиватель события { transf.volume = vol.value;//трансформация громкости в соответствие со значениюем ползунка channel.soundTransform = transf;//применение параметров трансформации } function panHandler(event:SliderEvent):void//функция-прослушиватель события { transf.pan = pan.value;//трансформация громкости в соответствие со значениюем ползунка channel.soundTransform = transf;//применение параметров трансформации } //функция-обработчик окончания воспроизведения function playComplete(_event:Event) { this.channel.stop(); this.musiclist.selectedIndex++; // обновляем объект чтобы можно было загрузить новый mp3-файл this.snd = new Sound(); // ссылку на mp3-файл берем из свойства data выбранной строки в списке файлов this.musicURL.url = this.musiclist.selectedItem.data; // загружаем mp3-файл this.snd.load(musicURL); // воспроизведение this.channel = snd.play(); } |