Просмотр полной версии : Програмный 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!");
}
}
Клип аттачится, но координаты не меняются.
Код находится в первом и единственном кадре :)
клево у тебя. смотри:
xmlNode = this;
и тут же
this.getNextHighestDepth()
ты глубину из нода берешь?
вот примерная конструкция на такой случай:
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!");
}
}
xmlData.onLoad = obrabotka_xml; - прикольно если это работает
mixey_lv
16.09.2005, 01:59
это работает..... какая разница как ф-ию называть?
тогда уберай 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 работают только для последней кнопки. Причем не важно на какую из них навести. Действие всё-равно происходит с той что была сдублированна последней. Как эту мелочь подправить?
совершенно ужасная манера не писать this.
не делая этого ты подставляешься на каждом шагу.
еще можно понять, когда так делают супергуру,
потому, что знают в тонкостях все особенности
видимости объектов. но почему-то никто из них так не делает.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.