![]() |
Проблема с записью переменной в массив
Вложений: 1
Код AS3:
Может подскажете где ошибка? Помимо моего ДНК :) Я только начал разбираться в АС3. файл для Adobe Flash CS5, в котором дело и происходит, прилагается. |
Поставил брикпоинт на строчку
Код AS3:
В чем ошибка то? |
Насколько я понимаю, ошибка где-то в районе функции Action(); которая вызывается из функции nextturn(); что в конце кода...
Проблема в том, что в массив TimeLine несколько раз подряд записывается массив EnemyAction. Если на втором ходу вывести trace (TimeLine); то пишет так: TimeLine=,,,Яростная атака,Рубящий удар,в корпус,12,,Яростная атака,Удар щитом,в голову,18,,,Яростная атака,Удар щитом,в голову,18 А если на третьем: TimeLine=,,,Яростная атака,Рубящий удар,в корпус,12,,Держать дистанцию,Удар щитом,в голову,12,,,Держать дистанцию,Удар щитом,в голову,12,,,,,Держать дистанцию,Удар щитом,в голову,12 Четвертый: TimeLine=,,,Яростная атака,Рубящий удар,в корпус,12,,Яростная атака,Рубящий удар,в голову,15,,,Яростная атака,Рубящий удар,в голову,15,,,,,Яростная атака,Рубящий удар,в голову,15,,,,,Яростная атака,Рубящий удар,в голову,15 И так далее... |
Может быть дело в переменной ti? Я что-то не разобрался в этом месте
Код AS3:
Это просто предположение, я сам вторую неделю изучаю as. У меня стоит CS4, проверить не могу. |
Не совсем так... Проверка TimeLine идет до того момента, когда в этом массиве встречается ближайшая запись. По умолчанию, пустая ячейка массива содержит значение "undefined". Т.е. цикл выполняется до тех пор, пока не встретит значение отличное от "undefined", т.е. любую запись.
|
Всё равно не понял зачем ты это делаешь, есть же функции которые выводят длину массива, функции записи в начало или конец.
|
Массив неопределенной длинны TimeLine - время.
Массивы HeroAction и EnemyAction - содержат действия героя и врага соответственно. Они заносятся в массив TimeLine в месте на которое указывает переменная ti. HeroTime и EnemyTime - переменные, которые обозначают временные затраты на удар. Проверка делается для того, что бы узнать кто бьет первым и когда. Например: Действие героя занимает 5 единиц времени (HeroTime = 5) А врага - 8 единиц времени (EnemyTime = 8) В в пятую ячейку TimeLine заносится HeroAction, а в 8-ю EnemyAction. Цикл do/while проверяет массив TimeLine до первого найденного действия. |
Переписал код таким образом:
Код AS3:
|
Но проблема все еще осталась - в функции Action(); просто в какой-то момент перестает срабатывать часть этого кода:
Код AS3:
Код AS3:
Код AS3:
Добавлено через 43 минуты Интересно, что если вместо: Код AS3:
Код AS3:
Цитата:
Добавлено через 6 часов 41 минуту Все, оно работает. Ошибку нашел. Спасибо за внимание. |
| Часовой пояс GMT +4, время: 18:13. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.