PDA

Просмотр полной версии : Програмный attach


mixey_lv
15.09.2005, 20:48
Кто подскажет почему так не работает...
function obrabotka_xml(success) {
if (success) {
xmlNode = this;
total = xmlNode.childNodes.length;
for (i=0; i<total; i++) {
attachMovie("menu_item", "menu_item"+i, this.getNextHighestDepth());
this["menu_item"+i]._x = 300; // ВОТ ТУТ НЕ РАБОТАЕТ :)
this["menu_item"+i]._y = 30*i+30;// ВОТ ТУТ НЕ РАБОТАЕТ :)
totalchild = xmlNode.childNodes[i].childNodes.length;
for (k=0; k<totalchild; k++) {
}
}
} else {
trace("File not found!");
}
}
Клип аттачится, но координаты не меняются.
Код находится в первом и единственном кадре :)

Iv
15.09.2005, 21:20
клево у тебя. смотри:
xmlNode = this;
и тут же
this.getNextHighestDepth()

ты глубину из нода берешь?

Iv
15.09.2005, 21:29
вот примерная конструкция на такой случай:

this.in_xml = new XML();
this.in_xml._parent = this;
this.in_xml.ignoreWhite = true;
this.in_xml.onLoad = function(ok) {
if (!ok || this.status) {
return trace("loaded: "+ok+" valid: "+!this.status);
}
this._parent.buildScene(this.firstChild.childNodes);
};
this.buildScene = function(in_array) {
for (var i = 0, len = in_array.length; i<len; i++) {
this.attachMovie("menu_item_mc", "it"+i+"_mc", i, {_x:300, _y:30*i+30});
}
};

mixey_lv
16.09.2005, 00:55
Переделал вот так, а результат тот же :(
Чего-то я не понимаю с этими this-ами :)
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.load("gallery_pictures/r4.xml");
xmlData.onLoad = obrabotka_xml;

function obrabotka_xml(success) {
if (success) {
xmlNode = xmlData;
total = xmlNode.childNodes.length;
for (i=0; i<total; i++) {
attachMovie("menu_item", "menu_item"+i, this.getNextHighestDepth());
//_root["menu_item"+i].th_preview.loadmovie(xmlNode.childNodes[i].attributes.button);
this["menu_item"+i]._x = 300;
this["menu_item"+i]._y = 30*i+30;
//trace(i+") Name: "+xmlNode.childNodes[i].attributes.name+" Button: "+xmlNode.childNodes[i].attributes.button);
totalchild = xmlNode.childNodes[i].childNodes.length;
for (k=0; k<totalchild; k++) {
//trace(" Большая картинка : "+xmlNode.childNodes[i].childNodes[k].attributes.big_pic+" Маленькая картинка : "+xmlNode.childNodes[i].childNodes[k].attributes.thumbnail);
//trace(" Текст : "+xmlNode.childNodes[i].childNodes[k].firstChild.toString());
}
}
} else {
trace("File not found!");
}
}

Stone
16.09.2005, 01:52
xmlData.onLoad = obrabotka_xml; - прикольно если это работает

mixey_lv
16.09.2005, 01:59
это работает..... какая разница как ф-ию называть?

Stone
16.09.2005, 02:09
тогда уберай this.getNextHighestDepth()
или хотябы для теста замени на _root или что там у тя.

или хотябы трасерни this

mixey_lv
17.09.2005, 02:54
Итак с тем разобрался, но появились новые вопросы :)
function menu_init() {
for (i=0; i<total; i++) {
attachMovie("menu_item", "menu_item_"+i, getNextHighestDepth());
menu_mc = eval(["menu_item_"+i]);
menu_mc._x = 750;
menu_mc._y = 35*i+30;
menu_mc.th_preview.loadMovie(xmlNode.childNodes[i].attributes.button);
menu_mc.onRollOver = function() {
menu_mc.menu_bullet._width = 100;
};
menu_mc.onRollOut = function() {
menu_mc.menu_bullet._width = 30;
};
totalchild = xmlNode.childNodes[i].childNodes.length;
for (k=0; k<totalchild; k++) {
}
}
}
Всё дублируется, как надо. только вот onRollOver и RollOut работают только для последней кнопки. Причем не важно на какую из них навести. Действие всё-равно происходит с той что была сдублированна последней. Как эту мелочь подправить?

Iv
18.09.2005, 16:05
совершенно ужасная манера не писать this.
не делая этого ты подставляешься на каждом шагу.
еще можно понять, когда так делают супергуру,
потому, что знают в тонкостях все особенности
видимости объектов. но почему-то никто из них так не делает.