Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проблема в цикле (http://www.flasher.ru/forum/showthread.php?t=118096)

KiL33 14.11.2008 13:38

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

Division 14.11.2008 13:41

UPD: всё сказанное не актуально, так как тогда ещё не было архива (:
UPD2: Ошибка в том что ты используешь имя клипа.
Код AS1/AS2:

this._name.substr(-1)

Если индекс больше 9, например 10, то ты получишь 1 на выходе. Создавай у мувиков дополнительные свойства с их индексами при таком подходе.

lexa2000lexa 14.11.2008 13:57

протрейсити вот эту строчку и поймете в чем у вас ошибка
Код AS1/AS2:

trace(Number(this._name.substr(-1)))


INK• 14.11.2008 18:08

Код AS1/AS2:

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

Вложений: 1
Цитата:

Сообщение от Division (Сообщение 776978)
Создавай у мувиков дополнительные свойства с их индексами при таком подходе.

…а какой подход ты бы посоветовал? :)

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

Division 14.11.2008 20:26

Цитата:

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

INK• 17.11.2008 00:02

Код AS1/AS2:

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

Код AS1/AS2:

_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

Код AS1/AS2:

this._name.substr(1,this._name.length )

где то так.

Wolsh 17.11.2008 00:51

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

KiL33 17.11.2008 10:36

Вложений: 1
Цитата:

Сообщение от Wolsh (Сообщение 777494)
Да все что нужно это убрать минус.

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

lexa2000lexa 18.11.2008 12:34

А не проще ли было написать вот так
Код AS1/AS2:

ID=this.id

нежели так
Код AS1/AS2:

ID = Number(this._name.substr(1));

?


Часовой пояс GMT +4, время: 23:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.