<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=396231&amp;view=findpost&amp;p=3542225</guid>
        <pubDate>Fri, 07 Nov 2014 10:46:14 +0000</pubDate>
        <title>загрузка в swf xml</title>
        <link>https://forum.sources.ru/index.php?showtopic=396231&amp;view=findpost&amp;p=3542225</link>
        <description><![CDATA[Juliejulie: Добрый день&#33; <br>
Столкнулась с такой проблемой:<br>
Есть главная форма(main) в которую подгружаю swf файл (albums).<br>
Отдельно сам файл albums работает, но при подгрузке через главную выдает ошибку:<br>
<br>
TypeError: Error #2007: Параметр child не должен быть равен нулю.<br>
	at flash.display::DisplayObjectContainer/addChildAt()<br>
	at fl.controls::BaseButton/drawBackground()<br>
	at fl.controls::LabelButton/draw()<br>
	at fl.core::UIComponent/callLaterDispatcher()<br>
<br>
<br>
Код файла main:<br>
[<br>
import flash.display.Loader; //класс для загрузки внешнего содержимого<br>
import flash.net.URLRequest; //класс для создания гиперссылок<br>
import flash.utils.*; // для работы компонента ProgressBar<br>
import fl.controls.ProgressBar;// для динамического создания компонента ProgressBar<br>
import fl.controls.ProgressBarDirection;<br>
import fl.controls.ProgressBarMode;<br>
import flash.events.Event;<br>
<br>
var url :URLRequest[td] = new URLRequest(); // для ссылки на подгружаемый swf<br>
<br>
var ploader:ProgressBar = new ProgressBar();<br>
this.ploader.move(500,300); // перемещение в нужную точку<br>
<br>
this.addChild(ploader); // добавление в список отображения<br>
this.ploader.direction = ProgressBarDirection.RIGHT;<br>
ploader.mode = ProgressBarMode.MANUAL;<br>
ploader.visible = false;<br>
<br>
var mcLoader:Loader = new Loader();<br>
mcLoader.x = 350; // перемещение в нужную точку<br>
mcLoader.y = 150;<br>
addChild(mcLoader); // добавление в список отображения<br>
<br>
<br>
//Добавление обработчиков событий, связанных с загрузкой внешнего содержимого<br>
mcLoader.contentLoaderInfo.addEventListener(Event.OPEN, loadOpen);<br>
mcLoader.contentLoaderInfo.addEventListener(Event.INIT, loadInit);<br>
mcLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);<br>
mcLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);<br>
<br>
function loadOpen(_event:Event)<br>
{<br>
	ploader.visible = true;<br>
	setChildIndex(ploader, numChildren - 1);<br>
}<br>
<br>
function loadInit(_event:Event)<br>
{<br>
	mcLoader.content.visible = false;<br>
}<br>
<br>
function loadProgress(_event:ProgressEvent) // отображаем процесс загрузки<br>
{ // в компоненте ProgressBar<br>
	ploader.setProgress(_event.bytesLoaded, _event.bytesTotal);<br>
}<br>
<br>
function loadComplete(_event:Event) // по завершении загрузки содержимого<br>
{<br>
	ploader.visible = false; // скрываем ProgressBar<br>
	mcLoader.content.visible = true; // отображаем контент<br>
}<br>
<br>
url.url=&quot;galery.swf&quot;;<br>
mcLoader.load(url);<br>
<br>
<br>
//обработчики событий нажатия на кнопки<br>
<br>
alb.addEventListener(MouseEvent.CLICK, albClick);//обработчик события для  песен<br>
<br>
<br>
function albClick(_event:Event) //функция обработчик нажатия кнопки главная<br>
{		<br>
	mcLoader.unload();<br>
	url.url=&quot;albums.swf&quot;<br>
	mcLoader.load(url);<br>
}<br>
<br>
]<br>
<br>
<br>
Файл albums<br>
<br>
<br>
import flash.net.URLRequest;<br>
import flash.media.Sound;<br>
import flash.media.SoundChannel;<br>
import flash.media.ID3Info;<br>
import fl.controls.Slider; <br>
import fl.events.SliderEvent; <br>
import flash.media.SoundTransform;<br>
import flash.media.SoundMixer;<br>
<br>
this.stop();<br>
<br>
var transf : SoundTransform = new SoundTransform(); // переменная для трансформации звука<br>
//текущая позиция звука<br>
var pos:Number=0;<br>
//общее количесвто файлов<br>
var count:Number;<br>
<br>
bPause.visible=false;<br>
<br>
// XML-документ<br>
<br>
var list:XML = new XML();<br>
var childs:XMLList = new XMLList(); // объект для хранения всех дочерних узлов документа<br>
var XML_URL:String;<br>
if (al==1) {<br>
this.XML_URL = &quot;listcrazy.xml&quot;;// адрес документа<br>
}<br>
<br>
if (al==2)<br>
 {this.XML_URL = &quot;list.xml&quot;;// адрес документа<br>
}<br>
<br>
if (al==3) {<br>
  this.XML_URL = &quot;listhumanity.xml&quot;;// адрес документа<br>
}<br>
<br>
if (al==4) {<br>
  this.XML_URL = &quot;listbest.xml&quot;;// адрес документа<br>
}<br>
var myXMLURL:URLRequest = new URLRequest(XML_URL); // гиперссылка<br>
var myLoader:URLLoader = new URLLoader(myXMLURL);  // загрузчик текстового содержимого<br>
var time:Number = 0;//												   // загружаем в него XML-документ<br>
var musicURL:URLRequest = new URLRequest(); // гиперссылка для mp3-файла<br>
var snd:Sound = new Sound();                // объект-звук<br>
var channel :SoundChannel = new SoundChannel(); // звуковой канал<br>
<br>
myLoader.addEventListener(&quot;complete&quot;, xmlLoaded);  // окончание загрузки содержимого в загрузчик<br>
function xmlLoaded(_event:Event):void// окончание загрузки внешнего XML-документа<br>
{	<br>
 	this.list = XML(myLoader.data); 		// записываем загруженный документ в объект XML<br>
	this.childs = this.list.child(&quot;item&quot;); 		// в childs заносим все дочерние узлы корневого узла XML-документа<br>
	var item:XML;  // временный узел документа<br>
	count=0;<br>
	<br>
	 		<br>
	// временный узел документа<br>
	<br>
	//обнуление количества файлов<br>
	//count=0;<br>
	// цикл перебора всех дочерних узлов<br>
	<br>
	// цикл перебора всех дочерних узлов<br>
	for each(item in this.childs)<br>
	{this.count++;<br>
/*<br>
muzlist - экземпляр компонента List<br>
item.attributes() - все атрибуты тега - текущего рассматриваемого узла. объект класса XMLList<br>
item.attributes()[0] - значение первого атрибута (ссылка на файл)<br>
item.attributes()[1] - значение второго атрибута (название композиции)<br>
*/<br>
	 this. musiclist.addItem({label:item.attributes()[1], data:item.attributes()[0]});<br>
	  //увеличиваем число файлов<br>
	  count++<br>
	this.musiclist.selectedIndex = 0; }<br>
}// по умолчанию выбран первый элемент списка<br>
<br>
<br>
vol.addEventListener(SliderEvent.CHANGE, volHandler);//добавление функции-прослушивателя события <br>
//перемещения ползунка слайдера vol<br>
pan.addEventListener(SliderEvent.CHANGE, panHandler)<br>
<br>
vol.value = transf.volume;//определяем значение ползунка для громкости<br>
pan.value = transf.pan;//определяем значение ползунка для панорамирования<br>
<br>
<br>
this.bPlay.addEventListener(MouseEvent.CLICK, playClick);<br>
// обработчик события нажатия кнопки play<br>
<br>
this.bPause.addEventListener(MouseEvent.CLICK, PauseClick);<br>
// обработчик события нажатия кнопки pause<br>
this.btforward.addEventListener(MouseEvent.MOUSE_DOWN,fo);<br>
this.btback.addEventListener(MouseEvent.MOUSE_DOWN,ba);<br>
this.bStop.addEventListener(MouseEvent.CLICK, StopClick);<br>
this.baaack.addEventListener(MouseEvent.CLICK, baaackClick);<br>
<br>
<br>
function  baaackClick(_event:MouseEvent)<br>
{<br>
if (this.channel) // если звуковой канал задан (звук уже воспроизводился хотя бы раз)<br>
	{<br>
		this.channel.stop(); // останавливаем воспроизведение звука в канале<br>
	}<br>
	this.gotoAndStop(1);<br>
<br>
}<br>
<br>
function playClick(_event:MouseEvent)// функция-обработчик события при нажатии на кнопку play<br>
{	<br>
	if (this.channel) // если звуковой канал задан (звук уже воспроизводился хотя бы раз)<br>
	{<br>
		this.channel.stop(); // останавливаем воспроизведение звука в канале<br>
	}<br>
    this.snd = new Sound();     // обновляем объект чтобы можно было загрузить новый mp3-файл<br>
	this.musicURL.url = this.musiclist.selectedItem.data; // ссылку на mp3-файл берем из свойства data выбранной строки в списке файлов<br>
	<br>
	this.snd.load(musicURL);    // загружаем mp3-файл<br>
	this.channel = this.snd.play(time,0,transf);  // воспроизведение<br>
	this.channel.addEventListener(Event.SOUND_COMPLETE, playComplete);<br>
	this.bPlay.visible=false;<br>
	this.bPause.visible=true;<br>
}<br>
<br>
function StopClick(_event:MouseEvent)//функция-обработчик события при нажатии на кнопку stop<br>
<br>
{<br>
	<br>
	this.channel.stop(); // останавливаем воспроизведение звука в канале<br>
	this.time=0;<br>
	this.bPlay.visible=true;<br>
	this.bPause.visible=false;<br>
}<br>
<br>
<br>
function PauseClick(_event:MouseEvent)//функция-обработчик события при нажатии на кнопку pause<br>
{<br>
    this.time = channel.position;//помещаем в переменную значение времени на которой проигрывается песня<br>
   this.channel.stop();//стоп песня<br>
	this.bPlay.visible=true;<br>
	this.bPause.visible=false;<br>
}<br>
<br>
<br>
<br>
function fo(_ev:Event)//вперед на следующую композицию<br>
{<br>
	<br>
<br>
	if (this.channel) // если звуковой канал задан (звук уже воспроизводился хотя бы раз)<br>
	{<br>
		this.channel.stop(); // останавливаем воспроизведение звука в канале<br>
	}<br>
    this.snd = new Sound();<br>
	<br>
	if (this.musiclist.selectedIndex==count-1)<br>
	{this.musiclist.selectedIndex=0;}<br>
	else <br>
	{<br>
	this.musiclist.selectedIndex++;<br>
	}<br>
	this.musicURL.url = musiclist.selectedItem.data;<br>
	this.snd.load(musicURL);<br>
	<br>
	<br>
	//воспроизведение с полученной позиции<br>
	this.channel = this.snd.play(time,0,transf);<br>
	this.channel.addEventListener(Event.SOUND_COMPLETE, playComplete);<br>
}<br>
<br>
<br>
function ba(_ev:Event) //назад к предыдущей композиции<br>
<br>
{<br>
		if (this.channel) // если звуковой канал задан (звук уже воспроизводился хотя бы раз)<br>
	{<br>
		this.channel.stop(); // останавливаем воспроизведение звука в канале<br>
	}<br>
    this.snd = new Sound();<br>
	if (this.musiclist.selectedIndex&gt;0)<br>
 	this.musicURL.url = musiclist.selectedItem.data;<br>
	this.snd.load(musicURL);<br>
	//воспроизведение с полученной позиции<br>
	this.channel = snd.play(0,0,transf);<br>
	this.channel.addEventListener(Event.SOUND_COMPLETE, playComplete);<br>
}<br>
<br>
<br>
<br>
function volHandler(event:SliderEvent):void//функция-прослушиватель события<br>
{<br>
	transf.volume = vol.value;//трансформация громкости в соответствие со значениюем ползунка<br>
	channel.soundTransform = transf;//применение параметров трансформации<br>
}<br>
<br>
function panHandler(event:SliderEvent):void//функция-прослушиватель события<br>
{<br>
	transf.pan = pan.value;//трансформация громкости в соответствие со значениюем ползунка<br>
	channel.soundTransform = transf;//применение параметров трансформации<br>
}<br>
<br>
<br>
<br>
//функция-обработчик окончания воспроизведения<br>
function playComplete(_event:Event)<br>
{<br>
	<br>
	this.channel.stop();<br>
	this.musiclist.selectedIndex++;<br>
	// обновляем объект чтобы можно было загрузить новый mp3-файл<br>
	this.snd = new Sound();   <br>
	<br>
	// ссылку на mp3-файл берем из свойства data выбранной строки в списке файлов<br>
	this.musicURL.url = this.musiclist.selectedItem.data; <br>
	// загружаем mp3-файл<br>
	this.snd.load(musicURL);    <br>
	// воспроизведение<br>
	this.channel = snd.play();<br>
}]]></description>
        <author>Juliejulie</author>
        <category>Flash, Flex, ActionScript</category>
      </item>
	
      </channel>
      </rss>
	