2013-07-03 4 views
0

이것은 오래 동안 나를 괴롭혔다.Actionscript3 응용 프로그램에서 스테이지 Event.RESIZE를 어떻게 처리합니까?

public class Preload extends MovieClip 
{ 
    protected var main:Main; 

    public function preloader() 
    { 

      this.main = new Main(); 
      this.addChild(this.main); 

      stage.addEventListener(Event.RESIZE, this.onResize); 
    } 

    protected function onResize(e:Event): void 
    { 
      this.main.x = stage.stageWidth>>1; 
      this.main.y = stage.stageHeight>>1; 
    } 

} 

무엇 홈페이지가 필요로하는 경우에 대해도 크기를 조정하기 : 단계 크기 조절을 사용하는 경우

, 당신이 뭔가를 말할 수 있을까? resize 이벤트에 응답하는 많은 시스템이 있고 스테이지 이벤트를 추가해야하는지 모릅니다. 모든 화면에 리스너를 리사이징하거나 단일 위치에서 제어해야하는지 여부는 알 수 없습니다.

예를 들어, 위의 onResize 수신기에 this.main.resize()를 추가 한 다음 화면에 IResizable 인터페이스를 구현합니다 (예 :).

모범 사례는 무엇입니까?

편집 : 또는 크기를 조정해야 무효화 같은 더 일반적인 뭔가,()의 성능을

+1

응용 프로그램의 크기와 확장 할 사물의 수에 따라 원하는 옵션에 따라 몇 가지 옵션이 있습니다. 응답 성을 높이기 위해 크기를 조정하거나 위치를 변경하려는 모든 것에 대해 크기 조정 수신기를 추가하십시오. 모든 것을 크기 조정하려는 경우 컨테이너를 만들고 컨테이너 무비 클립의 scaleX 및 scaleY를 설정하는 것이 더 좋습니다. – Marijn

+0

Thanks Marijn. (나는 비례하지 않는다). 보시다시피, 나는이 경로를 택할 수도 있었지만 여러 청취자가 느린다고 들었습니다. Pier를 참조하십시오. – user1059939

답변

1

이 문서 클래스 만 1 Event.RESIZE 청취자를 가지고하는 것이 좋습니다의 일부. 그런 다음 모든 하위 클래스와 기능이있는 하위에 이벤트를 전파하거나 Robert Penner가 멋진 Signals framework을 사용하여 이벤트를 전달하십시오.

문서 클래스의 크기를 조절해야하는 경우 가장 쉬운 방법은 모든 콘텐츠를 Sprite 안에 넣고 대신 크기를 조절하는 것입니다.

관련 문제