2011-05-09 5 views
1

두 가지 주요 부분으로 구성된 기능이 있습니다 (A와 B라고 부릅니다). 파트 B가 레이아웃 변경으로 완전히 완료되면 파트 B가 실행되어야합니다. 그러나 "part A is done"신호가 없으므로 part B가 실행되기 전에 validateNow()를 호출했습니다. 이것은 효과가 있지만 너무 비효율적 인 것 같습니다. 즉, 즉각적인 조치를 강요하는 다른 트릭이 있는지 또는 그 라인을 따라 무엇인가가 있는지 궁금 해서요. 감사합니다.강제로 재 측정

+0

-1. A와 B가 무엇인지에 대한 설명과 코드를 제공하지 않았습니다. 함수가 실제로 단일 함수의 일부인 경우 다른 작업을 수행 할 필요없이 동 기적으로 실행해야합니다. – JeffryHouser

답변

2

updateDisplayList()에서 B 부분을 호출 할 수 있습니다. A 부분을 마무리 한 후 함수 내에서 다음

private var partAPerformed:Boolean; 

: 그 내용은

당신은 어떤 플래그를 도입 할 필요가

partAPerformed = true; 
invalidateDisplayList(); 

: 그리고 나에서

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
{ 
    super.updateDisplayList(unscaledWidth, unscaledHeight); 
    if (partAPerformed) 
    { 
     // Part B 
     partAPerformed = false; 
    } 
} 
+0

개인적으로 updateComplete 처리기를 추가하는 것이 updateDisplayList()에 무언가를 추가하는 것보다 더 나은 옵션이라고 생각합니다. updateDisplayList()는 모든 렌더링 이벤트 중에 반드시 실행되지는 않습니다. 그러나 사물이 어떻게 구현되고 원래 포스터의 코드가 없는지에 따라 달라 지므로 추측하기 어렵습니다. – JeffryHouser

1

설명하는 상황을 파악하는 데 어려움을 겪고 있기 때문에 일부 코드가 도움이됩니다. 내 말은, 계속 진행중인 작업은 비동기식이라고 생각합니다. 왜냐하면 분명히 어떤 동기식이라도 타이밍이 문제가되지 않기 때문입니다. 파트 A는 정확히 무엇을하고 있습니까?

그러나 이벤트 및 이벤트 수신기 측면에서 비동기 작업을 항상 고려해야합니다. 그래서 모든 것을 처리하는 하나의 함수를 만들려고하기보다는 하나의 이벤트가 다른 이벤트에서 전달되는 이벤트를 청취하는 두 가지 기능이 있습니다.

+0

+1 PartA와 PartB 모두 UIComponents인지 궁금합니다. – JeffryHouser