![]() |
Возможно - ли соревнование потоков в ActionScrip 3.0
Привет всем, возникла такая проблема:
Реализую игру в которой использую модель - вид - контроллер. В модели есть стек со снарядами, при появлении снаряда в модели она генерит соответствующее событие, и при взрыве(удалении снаряда) так же. Снаряд создается по нажатию клавиши(выстрел). Вид слушает события создания и удаления и соответственно по созданию создает мувиклип - снаряд добавляет его на стейдж и запихивает элемент в HashMap. Потом в процессе полета с использованием итератора из этой хешмапы снаряда пересчитываются высоты, пересчет происходит в ф ции updateView(), которая реагирует на событие апдейта. Так вот, когда модель удаляет снаряд и генерирует событие, вид это событие подхватывает и удаляет вид снаряда из стейджа и из своего стека, но проблема в том, что ф - ция вида - updateView() считает, что мувиклип - снаряд все еще не удален Это сайт с которог скачивал структуры данных, HasMap использую Код:
//Ф - ция отображаеые обьекты объекты по возрастанию глубиныЗараннее благодарен, Владимир Владимир |
в awm1 было:
Flash executes action blocks one after another, so the execution flow inside of a block is never interrupted, neither by event nor by gotoAndPlay() or similar actions. Real parallel execution would be nicer? I'm sure it would dramatically affect player stability, which is great now, considering all things going on in a complex movie. но для awm2 я не могу найти точного описания о том как проходит выполнение. И так как в фичах не описано ничего подобного, то я предпологаю что все осталось по старому: код не может быть прерван извне. Исходя из этого - скорее всего updateView использует ссылку на еще живой обьект, тоесть удаление не произошло полностью |
А как можно этого избежать? Можно, конечно использовать обработку исключений, но хотелось - бы решить проблему в принципе
|
на этот вопрос сможете ответить только вы, так как на мой взгляд исходных данных недостаточно, хотелось бы видеть фрагменты кода удаления и updaeView
|
| Часовой пояс GMT +4, время: 18:17. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.