Я бы использовал MovieClipLoader, потому что он лучше обрабатывает события, когда вы хотите назначить черты для MovieClip (или в данном случае изображения) после его загрузки.
Этот код не проверен. И этот код не завершен! Это просто чтобы дать вам идею. Там вы заметите некоторые комментарии, где я говорю вам, что вам придется размещать свои изображения самостоятельно. То есть вам придется учитывать размеры ваших изображений и корректировать _x и _y каждого из них после его загрузки.
Другое дело, это не будет работать очень хорошо, если вы нажмете CTRL + ENTER для тестирования в Flash IDE, потому что он использует корневые относительные URL для ваших изображений и ссылок. Так как Flash IDE не работает на веб-сервере, он не сможет найти ваши изображения! Возможно, вы захотите использовать специальный тестовый XML-файл при отладке в Flash IDE.
Кроме того, убедитесь, что в вашем XML есть корневой узел. Это просто плохой XML - не иметь корневого узла.
XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<myImage>
<imagePath>/flash/image1.jpg</imagePath>
<imageurl>/flash/image1.html</imageurl>
</myImage>
<myImage>
<imagePath>/flash/image2.jpg</imagePath>
<imageurl>/flash/image2.html</imageurl>
</myImage>
<myImage>
<imagePath>/flash/image3.jpg</imagePath>
<imageurl>/flash/image3.html</imageurl>
</myImage>
</root>
Actionscript (кадр 1):
var xmlData:XML = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = function(loaded) {
if (loaded) {
for(var i = 0; i < this.firstChild.childNodes.length; i++) {
var mc:MovieClip = _root.createEmptyMovieClip("item" + i, _root.getNextHighestDepth());
var node:XMLNode = this.firstChild.childNodes[i];
loadMovieClip(mc, node);
}
} else {
trace("file not loaded!");
}
};
xmlData.load("/flash/languages.xml");
function loadMovieClip(mc:MovieClip, node:XMLNode) {
var loadListener:Object = new Object();
loadListener.onLoadInit = function(target:MovieClip, httpStatus:Number) {
//Be sure to do your positioning here!!! You probably
// don't want to stack them on top of each other.
// I didn't do that so you'll have to do it yourself.
target._x = 30;
target._y = 30;
var url = node.childNodes[1].firstChild.nodeValue;
target.onMouseUp = function() {
getURL(url);
}
//be sure to do positioning of your text field too.
var txt:TextField = _root.createTextField(target._name + "_text", _root.getNextHighestDepth(), 30, 100, 100, 20);
txt.text = url;
txt.type = "static";
txt.onMouseUp = function() {
getURL(url);
}
}
var mcl:MovieClipLoader = new MovieClipLoader();
mcl.addListener(loadListener);
mcl.loadClip(node.childNodes[0].firstChild.nodeValue, mc);
}
Надеюсь, это поможет.