2011-11-27 4 views
0

두 개의 객체가 스테이지에서 서로 검색 중입니다. 그들은 특정 속도로 특정 방향으로 움직입니다. 이 작업은 Event.ENTER_FRAME을 통해 수행됩니다. 객체가 다른 객체를 찾으면 객체를 중지하는 것을 포함하여 두 객체에서 특정 수정을 시작합니다.AS3 코드가 원자 단위로 실행됩니다.

이제 특정 문제가 발생했습니다. Object A가 Object B를 찾고, Object B에 대한 수정 작업을 시작하고 CPU가 ObjectA에서 가져와 ObjectB에 제공하면 어떻게됩니까? 이제 Object B는 ObjectA를 찾고 ObjectA가 이미이 작업을 수행하고 있지만 ObjectA에 대한 수정을 시작합니다. 이것은 매우 간단한 기술로 수정 될 수 있습니다. 일단 ObjectA가 ObjectB를 찾으면 lock() 메소드를 호출합니다. 그리고 objectB는 잠긴 상태에서 다른 객체를 검사하지 않습니다. 문제는 객체 사이의 거리를 확인하는 방법 (이 방법은 서로를 찾는 방법입니다)과 원자 단위로 잠금을 만드는 방법을 모르는 것입니다.

P. 지난 몇 달간 Java에서 멀티 스레딩 프로그래밍을 많이 했으므로 여기에 해당 사항이 적용되지 않을 수 있습니다.

감사합니다.

답변

2

아무런 문제가 없어야합니다. Flash는 멀티 스레딩을 수행하지 않습니다.

일단 이벤트 함수가 호출되면 다른 이벤트에 의해 중단없이 실행됩니다. 고려해야 할 유일한 문제는 복수 프레임 이벤트가 실행되는 순서를 모를 수 있다는 것입니다. 순서가 중요한 경우 개체 순서 메서드를 원하는 순서로 호출하는 단일 이벤트를 사용해야합니다.

+0

어느 것이 먼저 호출되는지는 중요하지 않습니다. 한 번 호출 된 후에는 다음 작업이 완료되기 전에 작업이 완료되도록하고 싶었습니다. –

+0

'addEventListener'에도 priority 매개 변수가 있다는 것을 기억했습니다. 순서가 중요하지만 동적 일 필요가없는 경우 유용합니다. – Kapep

관련 문제