PDA

Просмотр полной версии : Как сопоставить мувиклипам записи из XML


LevinSoft
16.04.2008, 11:42
Всем привет. Еще раз простите за "базар" в предыдущей теме, я больше не буду. Честно!

До меня дошло, все таки, как грамотно распарсить и запихать в массив элементы из xml-файла.
Вот так добился парсинга файла
_root.filename = "images.xml";
pictureObjects = [];
myXML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad = parseMe;
myXML.load("images.xml");
function parseMe() {
var pictures = this.firstChild.childNodes;
for (var i in this){
var obj = {};
for (var j in pictures[i].attributes.src){
obj[j] = pictures[i].attributes[i];
}
pictureObjects.push(pictures[i].attributes);
}
}

Как размножить мувик тоже нашел, правда получилось только через prototype, а нашел еще другие варианты...
Код не мой, зато работает.
movieClip.prototype.DMC=function(n,x0,y0,dx,dy,captionName,captions){
var name=this._name;
if (name.charAt(name.length-1)=="0"){name=name.substr(0,name.length-1)}
var basename=name;
this._x=x0;
this._y=y0;
this[captionname]=captions[0];
var yt=y0;
var xt=x0;
for (i=1;i<n;i++){// где n- число фоток в xml'е
name=basename+i;
yt+=dy;
xt+=dx;
this.duplicateMovieClip(name,i);

_parent[name]._y=yt;
_parent[name]._x=xt;
_parent[name][captionname]=captions[i];
}
}

Но как сопоставить элементы массива с записями размноженным мувикам вот это задача.
Как заранее присвоить действие мувику, чтобы он выполнял определенное дейтсвие, хотя имя мувика заранее не изветсно, и будет ли он создан тоже не известно?

qazwsx
16.04.2008, 11:54
Можно в прототипе :D.
Можеш все клипы при создании заносить в массив и обрабатывать.
Можеш при создании клипа ему присваивать какието параметры/функции.

LevinSoft
16.04.2008, 12:52
qazwsx, можешь по подробнее?

LevinSoft
18.04.2008, 09:38
У меня возникла проблема: есть мувик1, в котором идет обработка xml-файла, рядом с ним лежит другой мувик-кнопка, при отпускании (onRelease) которого в первый мувик должна передаться ссылка на xml-файл. Сама процедута передачи работает без вопросов, но возник такой баг - при запуске на мувике1 код начинает выполняться сразу же, а кнопку я могу нажать в любой момент, тем более что их на форме 50 где то. В итоге получается что парсер ругается что не может найти файл, ссылка с кнопки передается, но не обрабатывается. Помогите пожалуйста решить проблему!

qazwsx
18.04.2008, 09:53
А код нужно угодать?

LevinSoft
18.04.2008, 10:07
В смысле?
Код написан на этом клипе.
Вот вчера пытался сделать листнер чтоб сидел и слушал пока не отработается действие - получилось, но только один раз он это делает...

А, понял. Щас сооружу.
Вот это написано на клипе с именем Form
var link:String;
var songs_xml:XML = new XML();
songs_xml.ignoreWhite = true;
songs_xml.onLoad = function(success:Boolean) {
if (success) {
library.library_tree.dataProvider = this.firstChild;
} else {
trace("unable to load/parse link");
}
};
songs_xml.load(link)

Вот это на баттоне
on (release) {
form.link = "list.xml";
trace(form.link);
}

В Output: unable to load/parse link
Error opening URL "file:///G|/Diplom/undefined"
list.xml

Т.е. сначала запустился код, отработал, ругнулся. А потом я нажал на кнопку и передал ссылку.