![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2010
Сообщений: 12
|
Здравствуйте, уважаемые форумчане!
Только начинаю осваивать AS1, и появились проблемы. Мне необходимо создать программу, перекрашивающую n-ое кол-во мувиков (с именами muvik1, muvik2,.., muvikN) в 2 цвета, в зависимости от подгружаемых из текстового файла значений переменных A1, A2,..,An. Содержимое текстового файла загружено в _level0. Если переменная AN принимает значение = 100, то muvikN перекрашивается в красный, AN=50 - muvikN желтый var KOLVO = 10; i = 1; while (i < KOLVO + 1) { eval("muvik" + i)._alpha = 0; if (eval("_level0.A" + i) == 100) { COLORR = new Color(eval("muvik" + i)._name); COLORR.setRGB(0xE74912); eval("muvik" + i)._alpha = 36; } else { if (eval("_level0.A" + i) == 50) { COLORR2 = new Color(eval("muvik" + i)._name); COLORR2.setRGB(0xdadC00); eval("muvik" + i)._alpha = 41; } }; ++i; } Если задать оба условия if явно ( например, if(2<3)), то Флэшка работает, Если вытащить один из блоков, начинающихся с COLORR за пределы if - опять же все работает. Но мне необходим цикл, для обработки произвольного кол-ва мувиков. Внутри того же цикла while находится такой код, который функционирует исправно: |
|
|||||
|
Регистрация: Feb 2010
Сообщений: 12
|
Спасибо, друг, но не сработало =(
|
|
|||||
|
[+1 15.06.10]
Регистрация: Feb 2009
Сообщений: 56
|
а ты трейсы внутри ифов ставил? ты туда вообще заходишь?
может ты сравниваешь не однотипные данные? "_level0.A" + i - не текстовое ли значение имеет? |
|
|||||
|
Регистрация: Feb 2010
Сообщений: 12
|
Данные однотипные (числовые) "_level0.A" + i" это A1=100, A2=100, A3 = 50, ..., AN = 100
Я даже пытался изначально присваивать значение "_level0.A" + i" переменной, а в if'е оперировать этой переменной. При этом я задавал различные типы переменной var myVar:Number, var myVar:Number:text, myVar Number:String... Можно поподробнее про "трейсы"? Насколько я знаю trace необходимы для тестирования кода. Буду рад любой зацепке. P.S. Еще интересно зачем в (работающей) функции eval("muvik" + i).onRelease = function () переменная z, которая по сути равна i, но если заменить z на i функция перестает работать... Последний раз редактировалось ANTONIO1945; 16.02.2010 в 21:40. |
|
|||||
|
[+1 15.06.10]
Регистрация: Feb 2009
Сообщений: 56
|
trace ("tralala 1"); - просто выведет в оутпут надпись "tralala 1"
т.е. внутри IF поставь trace ("tralala " +i ); - если надпись появится, значит ты зашел в IF, если нет, значит условие не срабатывает Так же, можно поставить трейсы перед ифами, чтобы посмотреть чему же действительно равна "_level0.A" + i trace (_level0.A + i); ________ эээ... стоп, а чего это ты в ифе сравниваешь какую-то "_level0.A" + i с чем-то? получается, ты сравниваешь if ("_level0.A0" == 100) - "_level0.A0" здесь текстовое значение, это условие всегда ложно Последний раз редактировалось point111; 17.02.2010 в 11:53. |
|
|||||
|
Регистрация: Feb 2010
Сообщений: 12
|
Спасибо большое за наводку - попробую.
Цитата:
Выяснилось, что если заключить блок if в функцию мувика muvik, запускающуюся по какому-нибудь событию - все работает! Напр.: eval("muvik"+i).onRollOver = function() {if...} Проблема в том, что мувик должен менять цвет сразу же, без вмешательства пользователя Может подскажете како-либо подходящее событие? |
|
|||||
|
.
|
заменить на
или Второй вариант современнее. |
|
|||||
|
Регистрация: Feb 2010
Сообщений: 12
|
dimarik, спаибо, но проблема точно не в блоках начинающихся с Color, т.к. если вытащить их за пределы if - они работают. Твой вариант, кстати тоже работает, но
trace(eval("muvik" + i)._name)) -- возвращает название мувика "muvik1" trace(this["muvik" + i]) -- возвращает "_level0.instance1.muvik1" point111, трассировка if показала, что в if программа вообще не заходит! Последний раз редактировалось ANTONIO1945; 17.02.2010 в 13:19. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Проще было бы взглянуть на рабочий пример, чем сидеть и гадать, что вы там намудрили.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 11:08. |
|
|
« Предыдущая тема | Следующая тема » |
|
|