-
Метки
-
Мои проекты
-
Полезности
-
Архивы
Tricks
division by zero
27 Фев2010
Забавный баг обнаружился в JollyJong. Уже три человека умудрились схлопнуть фишки быстрее 1 тика таймера или 0.02сек, вызывая деление на 0 в коде:
s=Math.floor(multipler* 1000* 1/matchtimer);
s=s<5?5:s;
scoreAdd(s);В результате чего получали красивую сумму Infinity которую не могли добавить в таблицу рекордов и жаловались администрации портала ![]()
Вывода два:
- всегда делать проверку знаменателя на 0
- таймер флеша может дать задержку
p.s. matchtimer в коде — это счетчик тиков с начала хода
100 fps или тормозистор
16 Дек2009
Во флеше очень легко нарваться на ситуацию, когда вместо запланированной быстрой и плавной анимации получается наоборот. Для этого (при обилии вычислений и спрайтов на экране) достаточно поставить большой framerate: флеш-плеер захлебнется, и привязанная к линейке времени анимация начнет тормозить.
Выхода два:
1. x=F(t), или правильный подход: привязывать спрайтовую анимацию ко времени, т.е. назначить таймер, а линейную анимацию делать твинерами.
setInterval(Update, myPeriod, null);2. простой и читовый подход для всех остальных: cнизить фреймрейт до приемлемых значений в диапазоне 20-40 fps
stage.frameRate=40;
...
addEventListener(Event.ENTER_FRAME, Update);
// где Update() очередной тик игрового циклаВторой подход мы и применили в «Троглодитиках».
P.s. Открываю новую рубрику Tricks (трюки), в которую буду постить по мере накопления реальных читов, багов и прочих наблюдений, путь девелопера устилающих.
- Рубрика: Tricks
- Метки: Action Script 3, coding tricks


