PDA

Просмотр полной версии : Глюк c random и _curentframe


minimalistic
31.07.2007, 01:22
Есть кнопка при нажатии на которую рандомно вычисляется число от -8 до +8, на которое должна поднятся или опустится шкала. Проблема в том, что при всей простоте работает это НЕ ВСЕГДА. Т.е.
Вешаешь random нa кнопку, и отправлляешь через gotoAndStop (_currentframe на + ... шкалу в которой от 1 до 100 кадра растягивается Shape. Проверяем и видим что периодически при клике по кнопке число вычисляется (не равно 0 - выяснил через trace) а шкала стоит на месте.
Известен ли кому-нибудь этот баг? Может есть идеи получше?

etc
31.07.2007, 01:29
Код, пожалуйста.

minimalistic
31.07.2007, 02:05
без проблем:
http://minimalistic.ru/downloads/bar2.fla
В данном исходнике немного не настроена шкала, но факт остается фактом _currentframe - ошибается

etc
31.07.2007, 10:24
Я не смог определить, в каком именно месте проблема. Точнее, я не вижу саму проблему, что не так работает?

Вот, например, кусок кода:

stop();

bbb.onRelease = function() {
var z:Number = (1 + Math.round(Math.random() * 15));
if (p._currentframe == z) {
p.gotoAndStop(1 + Math.round(Math.random() * 15));
nextFrame();
} else {
p.gotoAndStop(z);
_root.disp.bar.gotoAndStop(_currentframe + z);
nextFrame();
}
};
А чей _currentframe используется? В данном случае явно клипа game, только непонятно, зачем.

Но это совершенно точно баг в коде или логике кода, а никак не в плеере.

minimalistic
01.08.2007, 04:17
Сейчас-то в чем проблема, не пойму... не могу зафиксировать кадр для того чтобы потом с него начал отсчет _currentframe.
вот исходник: http://minimalistic.ru/downloads/bar3.fla

etc
01.08.2007, 10:19
Я же говорю, я не понимаю, в каком именно месте проблема. Там куча разбросанного кода по всему fla-шнику и понять, где проблема, нереально.

KPOT
01.08.2007, 13:14
2 minimalistic ошибок в коде у тебя не мало на самом деле не смотря на то что вроде как запускаентся и всё работает.

начну с того как работает рандом. random(15) вернёт тебе все числа от 0 до 14 включительно, тоесть числа 15 ты там не получиш не когда. Это я заметил у тебя в обработчике нажатия на кнопку. Стоит заметить что 0 кадра не существует не где. Потому если хочеш попасть рандомно от 1 до 15 кадра пиши random(15) + 1

Далее, в том же обработчике идёт обращение к point он же "p" в первом кадре есть кнопка но поинт есть только со второго кадра, при первом нажатии он еще не проинициализирован и если ты его трейсанёш он будет undefined

lдалее, если ты хочеш убери везде скобки возле _currentframe, пиши просто .gotoAndStop(_currentframe + 5)

также если ты хотел сделать рандом от -8 до + 8 писал бы просто random(17) - 8; тоесть , если выпадет 0 у рандома будет -8, если выпадет 16 будет 8.

minimalistic
02.08.2007, 14:32
Исправил, учитывая все замечания, весь код вынес на главную временную шкалу, но индикатор почему-то глючит (реагирует только на положительные значения и не хочет начинать отсчет с _currentframe)
http://minimalistic.ru/downloads/bar3.fla

Wolsh
02.08.2007, 15:35
В первом кадре в коде поправь на
disp.bar.gotoAndStop(_currentframe + z + 35);

minimalistic
02.08.2007, 15:59
Это поправил, но почему шкала-то показывает не правильно (например при значении z = она поднимается и как-то показывает хаотично)
В чем глюк?
обновил: http://minimalistic.ru/downloads/bar3.fla

Wolsh
02.08.2007, 17:42
Поправь на:
disp.bar.gotoAndStop(disp.bar._currentframe + Number(z));

minimalistic
03.08.2007, 06:21
Спасибо, действительно работает ;)

Wolsh
03.08.2007, 09:47
у тебя z получается строковый при расчете. Поймешь почему?
А кадров с такими метками, понятно, нет. Поэтому переводим в число.
И если не уверен что правильно путь к мувику прописал, пользуйся инструментом target в панели экшнс. Это где прицел нарисован :)