PDA

Просмотр полной версии : for в function


benladen
25.12.2005, 02:12
когда я нажимаю на кнопку у меня вызывается функция updatethumb, которой я передаю параметры z,z2
trace показывает все как нужно (т.е. цикл вроде как работает), "но есть одно но", изображения как были прежними, так и остаются. через debug переменная image не изменяется. не могу понять в чем дело, вроде делаю все правильно. будьте, добры, подскажите, плз.


function updatethumb() {
b = 1;
i = 0;
for (var c:Number = _global.z; c<_global.z2; c++) {
var image:String = "thumb_"+c+".jpg";
trace ("slides_mc"+b+".holder"+i+"="+image);
imageLoader.addListener(loaderListener);
imageLoader.loadClip(this["image"], this["slides_mc"+b]["holder"+i]);
i+=1;
if ((i+1)%5 == 0) {b+=1;i=0;}
};
};

Король
25.12.2005, 03:19
function updatethumb() {
b = 1;
i = 0;
trace(_global.z);
for (var c:Number = _global.z; c<_global.z2; c++) {
var image:String = "thumb_"+c+".jpg";
trace("slides_mc"+b+".holder"+i+"="+image);
imageLoader.addListener(loaderListener);
imageLoader.loadClip(this["image"], this["slides_mc"+b]["holder"+i]);
i += 1;
if ((i+1)%5 == 0) {
b += 1;
i = 0;
}
}
}
_global.z = 1;
_global.z2 = 10;
updatethumb();


trace:


1
slides_mc1.holder0=thumb_1.jpg
slides_mc1.holder1=thumb_2.jpg
slides_mc1.holder2=thumb_3.jpg
slides_mc1.holder3=thumb_4.jpg
slides_mc2.holder0=thumb_5.jpg
slides_mc2.holder1=thumb_6.jpg
slides_mc2.holder2=thumb_7.jpg
slides_mc2.holder3=thumb_8.jpg
slides_mc3.holder0=thumb_9.jpg



как видишь - все изменяется как нужно

benladen
25.12.2005, 03:27
дак, я и говорю трейсит все как нужно, только картинки то старые остаются ...

не загружает он их ...

benladen
25.12.2005, 03:39
totalImages = 16
когда только загрузился сайт исполняется этот код:

for (var c:Number = 0; c<totalImages; c++) {

var image:String = "thumb_"+c+".jpg";
imageLoader.addListener(loaderListener);
imageLoader.loadClip(this["image"], this["slides_mc"+b]["holder"+i]);

i+=1;
if ((i+1)%5 == 0) {b+=1;i=0;}
};

он работает и все загружается

эта функция запускается(onPress) при выборе из меню другой категории (копия верхней):

function updatethumb() {
b = 1;
i = 0;
for (var c:Number = _global.z; c<_global.z2; c++) {
var image:String = "thumb_"+c+".jpg";
imageLoader.addListener(loaderListener);
imageLoader.loadClip(this["image"], this["slides_mc"+b]["holder"+i]);

i+=1;
if ((i+1)%5 == 0) {b+=1;i=0;}
};
};

проблема в том, что когда я выбираю в меню и пытаюсь поменять картинки, он изменяет их только на все thumb_15.jpg (через дебагер смотрел состояние этой переменной image - thumb_15.jpg, т.е. функция не изменяет переменную image, хотя trace пишет - ок)
бред какой-то ...

Король
25.12.2005, 03:40
а ты пробовал почитать в хелпе как грузить с помощью MovieClipLoader-а? попробуй.

benladen
25.12.2005, 06:11
а ты пробовал почитать в хелпе как грузить с помощью MovieClipLoader-а? попробуй.

ты хочешь сказать, что я не правильно его гружу, или то что его нелбзя в функции использовать? не очень понятно.

KUZEN
25.12.2005, 07:15
ты хочешь сказать, что я не правильно его гружу, или то что его нелбзя в функции использовать? не очень понятно.
Он хочет сказать что для начала нужно внимательно изучить этот класс , а потом уже что то делать ...

benladen
26.12.2005, 04:35
как я и думал, проблема была не в том, что я класс не правильно использовал, а в том что я объявлял два раза переменную image ...
но серавно, спасибо за участие в решении вопроса

benladen
26.12.2005, 04:45
еще один вопросец, тоже относящийся к данной теме

как распространить переменную i (индекс) на то, что находится внутри функции onRollOver


this.onEnterFrame = function () {

// RollOver в меню
for (i=1;i<=6;i++){
this["button_"+i].onRollOver = function () {
new mx.transitions.Tween(slider_mc, "_x", mx.transitions.easing.Elastic.easeOut, slider_mc._x, menu_array[i], 3, true);
new mx.transitions.Tween(slider_mc, "_width", mx.transitions.easing.Strong.easeOut, slider_mc._width, this._width, 0.2, true);
};
}; // end for
}; // end function


индекс 1 до 6 подставляется только в эту часть этого кода, кот. сверху
this["button_"+i].onRollOver

а в строчке:
new mx.transitions.Tween(slider_mc, "_x", mx.transitions.easing.Elastic.easeOut, slider_mc._x, menu_array[i], 3, true);

menu_array[i] всегда равен 6, т.е. не изменяется от 1 - 6

Antares
26.12.2005, 05:03
еще один вопросец, тоже относящийся к данной теме

Нет, братцы, так дело не пойдет...(с)

Новые вопросы -- в новых тредах. А этот -- закрыт.