На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania 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:
    ExpandedWrap disabled
      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

    ExpandedWrap disabled
      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,0978 ]   [ 17 queries used ]   [ Generated: 18.11.18, 16:32 GMT ]