PDA

Просмотр полной версии : Проблема в цикле


KiL33
14.11.2008, 13:38
Цикл, почему то не хочет выполнять 10-ое значение.
Т.е. в примере 11 элементов. Счет их начинается с 0 и десятый элемент при нажатии на который не выполняет действия (не выделяется).
Можно это как-то поправить?
И вообще, почему так происходит?

Division
14.11.2008, 13:41
UPD: всё сказанное не актуально, так как тогда ещё не было архива (:
UPD2: Ошибка в том что ты используешь имя клипа.
this._name.substr(-1)
Если индекс больше 9, например 10, то ты получишь 1 на выходе. Создавай у мувиков дополнительные свойства с их индексами при таком подходе.

lexa2000lexa
14.11.2008, 13:57
протрейсити вот эту строчку и поймете в чем у вас ошибкаtrace(Number(this._name.substr(-1)))

INK•
14.11.2008, 18:08
var n:Number = 10;
for (var i = 0; i<=n; i++) {
_root["q"+i].id = i;
_root["q"+i].onPress = function() {
for (i=0; i<=n; i++) {
_root['btn'+i] = false;
}
_root['btn'+Number(this._name.substr(-1))] = true;
myonPress(this.id);
};
}


где то так!

KiL33
14.11.2008, 20:20
Создавай у мувиков дополнительные свойства с их индексами при таком подходе.
…а какой подход ты бы посоветовал? :)

Выделение элементов вроде работает нормально с применением поправленного кода от INK•
Но проблемы на этом не закончились. Дальше не обходимо подтвердить выбор и вывести соответствующую информацию. Для этого я делаю кнопочку “Готово” и нумерую все элементы от 0 до 10. И снова выбрав десятый элемент при подтверждении он показывает информацию нулевого элемента.

Division
14.11.2008, 20:26
…а какой подход ты бы посоветовал?
ООП конечно (: А элементы все в массиве хранить для удобства.

INK•
17.11.2008, 00:02
myonPress = function (id:Number) {
_root['btn'+id] = true; <--- добавить



_root['btn'+Number(this._name.substr(-1))] = true; <---- убрать ниже из цикла


Добавлено через 26 минут
Да кстати. Хочу передать привет поясню что делает substr
substr имеет 2 параметра и возвращает новую строку
substr(начиная_С, длинной_В)

если начиная_С = -1 (или минус сколько то) то это значит, что надо смотреть с конца строки и взять оттуда 1 букво.
если бы было -2 то взять две буквы с конца соотвецтвенно.

тоесть

у тебя мувики именуются
q1
q2
q3
....
q10
так вот -1 с конца q1 = это у нас "1", с конца q2 это "2"... ну а с конца q10 это "0"

так вот. что бы работали твои махинации с именами мувиков, то скорей всего правельнее бы брать с первого (тоесть с начала смотреть) до this._name.length

this._name.substr(1,this._name.length )
где то так.

Wolsh
17.11.2008, 00:51
Да все что нужно это убрать минус. substr прекрасно обходится только стартовым индексом, считывая строку до конца.
И еще неплохо бы перестать гонять ID из строки в число и обратно. Вам нужна строка, она и так везде строка, зачем Вы ее в число-то переводите и потом обратно)))))

KiL33
17.11.2008, 10:36
Да все что нужно это убрать минус.

Изначально так и сделал, но не думал что это буде правильным, поэтому засомневался.
Переделал все несколько иначе.
Вот, посмотрите.

lexa2000lexa
18.11.2008, 12:34
А не проще ли было написать вот такID=this.id
нежели так ID = Number(this._name.substr(1));?

KiL33
18.11.2008, 19:32
Мы не ищем легких путей)) [Шутка]

Спасибо за поправку.