Здесь находится Массив - ваш друг. Вы можете сделать это без массива, просто используя цикл while, чтобы удалить каждый последний ребенок из спрайта или мувиклипа, к которому вы добавили большие пальцы. Причина, по которой мы используем массивы, состоит в том, чтобы мы могли повторно использовать большие пальцы, вместо того, чтобы перезагружать их, мы просто удаляем их из списка отображения. Вы добавляете ссылку на каждый объект в массив для каждого большого пальца, когда вы добавляете его в список отображения. Каждый узел thumbContainer в XML получает свой собственный массив, который добавляется в основной массив. Основной массив содержит ссылки на миниатюрные массивы. В миниатюрных массивах хранятся ссылки на загруженные миниатюры, чтобы их можно было добавлять и удалять из списка отображения. Если вы планируете никогда не использовать большие пальцы после того, как они были замечены, как только вы можете установить, что эта ссылка равна нулю, в противном случае просто удалите ее из списка отображения; Нет причин многократно загружать его. Когда вы будете готовы добавить новые большие пальцы, вы должны очистить предыдущие большие пальцы. Самый простой способ сделать это - это цикл while.
//Assuming the thumbs were loaded into container
while(container.numChildren > 0)
{
//Remove the first child until there are none.
container.removeChildAt(0);
}
//The XML/2 Containers/thumbContainer[0] and thumbContainer[1]
<?xml version="1.0" encoding="utf-8"?>
<xml>
<thumbContainer>
<thumb path="path/to/file" />
<thumb path="path/to/file" />
<thumb path="path/to/file" />
</thumbContainer>
<thumbContainer>
<thumb path="path/to/file" />
<thumb path="path/to/file" />
<thumb path="path/to/file" />
</thumbContainer>
</xml>
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class DocumentClass extends Sprite
{
private var _container:Sprite;
private var _mainArray:Array;
private var _xml:XML;
private var _urlLoader:URLLoader;
private var _urlRequest:URLRequest;
public function DocumentClass():void
{
if(stage) _init();
else addEventListener(Event.ADD_TO_STAGE, _init, false, 0 , true);
}
private function _init(e:Event = null):void
{
//Will contain arrays for each thumbContainer in the XML.
_mainArray = [];
_urlRequest = new URLRequest('path/to/xml');
_urlLoader = new URLLoader();
_urlLoader.addEventListener(Event.COMPLETE, _onXMLComplete, false, 0, true);
}
private function _onXMLComplete(e:Event):void
{
_xml = new XML(e.target.data);
_loadThumbs(0);
}
private function _loadThumbs(pIndex:int):void
{
_clearThumbs();
//Find out how many sets of thumbs there and add to _mainArray
for(var i:int = 0; i < _xml.thumbContainer.length(); i++)
{
var tempArray:Array = new Array();
for(var j:int = 0; j < _xml.thumbContainer[i].thumb.length; j++)
{
tempArray[i].push(_xml.thumbContainer[i].thumb[j][email protected]);
}
_mainArray.push(tempArray);
}
//Here is where we add the new content to container, or you can call a function to do it.
}
private function _clearThumbs():void
{
while(container.numChildren > 0)
{
//Remove the first child until there are none.
container.removeChildAt(0);
}
}
}
}
Опять же, это хорошая практика, чтобы содержать ссылку на то, что является многоразовым и просто удалить его из списка отображения вместо установки на нуль и подготовка к сборке мусора только для последующей загрузки. Я уже написал больше, чем планировал, и не смог пощекотать весь код, который я хотел. Важно настроить код, который гарантирует, что он загружает только определенный набор палец один раз; В этом вся идея. Что касается их удаления, это так же просто, как цикл while, который я вам показал, вам просто нужно знать имя DisplayObjectContainer, которое их родит.
Могу только сказать одно. ВАУ! Благодарим вас за этот урок. WOW !!! –