На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: PIL
  
> загрузка в swf xml , проблема в подгрузке файла swf
    Добрый день!
    Столкнулась с такой проблемой:
    Есть главная форма(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();
    }
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0223 ]   [ 16 queries used ]   [ Generated: 28.03.24, 21:06 GMT ]