AS3 выполняет код атомарно - PullRequest
0 голосов
/ 27 ноября 2011

У меня есть два объекта, которые ищут друг друга на сцене. Они движутся в определенном направлении с определенной скоростью. Это делается с помощью Event.ENTER_FRAME. Как только объект находит другой объект, он начинает вносить определенные изменения в оба объекта, включая его остановку.

Теперь возникла определенная проблема. Что если Объект A найдет Объект B, начните вносить некоторые изменения в Объект B, и ЦП будет взят из ObjectA и передан ObjectB. Теперь Object B найдет ObjectA и начнет вносить изменения в ObjectA, хотя ObjectA уже находится в процессе этого. Это можно исправить очень простым способом: когда ObjectA находит ObjectB, он вызывает метод lock (). И objectB не будет проверять другой объект, пока заблокирован. Проблема в том, что я не знаю, как сделать проверку расстояния между объектами (так они находят друг друга) и блокировки атомарным способом.

P.S. В последние месяцы я много занимался многопоточным программированием на Java, поэтому, возможно, эти вещи здесь не применимы.

Спасибо.

1 Ответ

2 голосов
/ 27 ноября 2011

Не должно быть никаких проблем. Flash не поддерживает многопоточность.

Вы можете быть уверены, что после вызова функции события она будет работать без прерывания другими событиями. Единственная проблема, которую вам, возможно, придется рассмотреть, заключается в том, что вы не знаете, в каком порядке будут выполняться несколько событий enter frame . Если порядок имеет значение, вы должны использовать одно событие, которое вызывает методы событий ваших объектов в нужном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...