これは、Arrayがあなたの友人であるところです。あなたは単に配列を使わずに、whileループを使って、スプライトまたは親指を追加したムービークリップからすべての最後の子を削除するだけで済みます。配列を使用する理由は、サムを単に再表示するのではなく、表示リストから削除するだけです。表示リストに追加するごとに、各オブジェクトの参照を各サムの配列にプッシュします。 XMLの各thumbContainerノードは、メイン配列に追加される独自の配列を取得します。メイン配列は、サムネイル配列への参照を保持します。サムネイル配列は、ロードされたサムネイルへの参照を保持するため、表示リストに追加したり削除したりすることができます。親指を一度見た後に親指を絶対に使用する予定がない場合は、参照をnullに設定することもできます。そうでなければ、単に表示リストから削除するだけです。何度もロードする必要はありません。新しい親指を追加する準備ができたら、前の親指を削除する必要があります。これを行う最も簡単な方法は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);
}
}
}
}
ここでも、再利用可能である何かへの参照を保持するために、単純代わりにnullに設定すると、表示リストから削除するには良い方法ですガベージコレクションのみを後で再度ロードするための準備をします。私は既に私が意図した以上のものを書いていて、私が望むすべてのコードで叩きつけることができませんでした。特定のサムセットを一度ロードするようにするコードを設定することは重要です。それが全体のアイデアです。それらを削除するには、私があなたに示したwhileループと同じくらい簡単ですが、親であるDisplayObjectContainerの名前を知る必要があります。
私はひとつだけ言うことができます。うわー! このレッスンは大変ありがとうございます。 WOW !!! –