무대 크기, 화면 크기 와 SWF 파일 크기 사이 의 차이

/**
 *            ,       ,           ,    
 * E   http://www.ghostwire.com/blog/archives/as3-difference-between-stage-size-screen-size-and-swf-size/
 */

이 글 에서 우 리 는 자주 오 해 받 는 width 와 height 속성 인 'stage. width / stage. height', 'stage. stage Width / stage. stage Height', 'loader Info. width / loaderInfo. height' 세 쌍 을 본다.
무대 사이즈 (스테이지 사이즈: stage. width / stage. height)
무대 (Stage) 는 플래시 콘 텐 츠 가 그 려 진 메 인 영역 을 말한다.이 영역 은 모든 디 스 플레이 목록 의 디 스 플레이 대상 을 포함 합 니 다. 모든 디 스 플레이 대상 이 같은 Stage 대상 에 포함 되 어 있 기 때 문 입 니 다.stage. width 와 stage. height 속성 은 무대 위의 사각형 경계 사 이 즈 를 제공 합 니 다.실제로 getBounds () 방법 을 호출 하면 같은 결 과 를 얻 을 수 있 습 니 다.
stage.width stage.height                 。     getBounds()  ,         。
var bounds:Rectangle = stage.getBounds(stage);
trace(bounds.width == stage.width);//true
trace(bounds.height == stage.height);//true
이 구역 들 은 표시 대상 이 차지 하 는 구역 만 계산 하기 때문에 원점 (0, 0) 부터 계산 하지 않 아 도 된다.예 를 들 어 디 스 플레이 목록 에 표시 대상 이 하나 밖 에 없고 이 디 스 플레이 대상 의 너비 가 100 픽 셀 이 50 픽 셀 이 높 으 면 stage. width 속성 은 100 을 되 돌려 줍 니 다. 이 대상 의 x 위 치 를 막론하고 같은 height 속성 은 50 을 되 돌려 줍 니 다.
이 구역 을 원점 에서 계산 하려 면 원점 에 보이 지 않 는 점 을 놓 을 수 있 습 니 다.
var dot:Shape = new Shape();
dot.graphics.beginFill(0,0);//     
dot.graphics.drawRect(0,0,1,1);
dot.graphics.endFill();
stage.addChild(dot);

목록 에 아무것도 없 거나 목록 에 있 는 모든 디 스 플레이 대상 이 비어 있 거나 크기 가 0 이면 stage. width 와 stage. height 는 0 으로 돌아 갑 니 다.이것 이 바로 프로그램 이 처음에 (목록 에 아무것도 표시 되 지 않 았 을 때) 이 두 속성의 값 이 모두 0 이라는 것 을 알 수 있 습 니 다.
(스크린 사이즈) 스크린 크기: stage. stage 폭 / stage. stage 높이
stage. stage Width 와 stage. stage Height 속성 은 플래시 플레이어 의 현재 시각 영역 (독립 된 창 시각 영역 이나 브 라 우 저의 플러그 인 시각 영역) 을 표시 합 니 다.비록 이 속성 들 은 읽 고 쓸 수 있 지만, 당신 의 코드 에 수 동 으로 설정 하면 아무런 효과 가 없습니다.코드 (수 동) 로 설정 하면 틀 리 지 않 지만 간단 합 니 다. 이렇게 하면 효과 가 없습니다.일반적으로 최종 사용자 (end - user) 가 플래시 플레이어 의 크기 를 조정 해야만 (플래시 플레이어 호출) 이 속성의 값 을 바 꿀 수 있 습 니 다.Event. RESIZE 이 벤트 를 감청 함으로써 프로그램 은 이 속성 값 이 변 경 될 때 알림 을 받 을 수 있 습 니 다. 이 이 벤트 는 Stage 대상 에서 보 냅 니 다.
stage.addEventListener(Event.RESIZE,on_stageResize);

function on_stageResize(evt:Event):void
{
	trace("screen width:" + stage.stageWidth);
	trace("screen height:" + stage.stageHeight);
}
Adobe 문서 에서 Stage. scaleMode 속성 을 StageScaleMode. NO 로 설정 하지 않 았 다 면SCALE, 그러면 stage. stage Width 와 stage. stage Height 속성 은 SWF 파일 의 원본 크기, 즉 편집 할 때 파일 속성 대화 상자 에 설 정 된 크기 와 같 습 니 다.
그러나 그것 은 사실 이 아니다.
Adobe 문서 에서 설명 한 것 과 반대로 stage. scaleMode 속성 은 stage. stage Width 와 stage. stage Height 속성 에 영향 을 주지 않 습 니 다.stage. scaleMode 속성 설정 이 왜 값 이 되 든 StageScaleMode. NOSCALE 또는 다른 것 도 좋 습 니 다. stage. stage Height 는 항상 (작가 가 여기 서 강조) 현재 플래시 플레이어 가 차지 하고 있 는 화면 영역 (screen area) 의 높이 를 제공 합 니 다. stage. stage Width 는 이 지역 의 너비 로 돌아 갑 니 다.우선 문서 에서 설명 하 는 방식 처럼 (implements) 이 값 들 이 틀 렸 습 니 다 (원문 will have been wrong).
화면 변화 에 응답 하 는 유연 한 레이아웃 을 만 들 려 면 현재 Flash Player 크기 를 알 아 보 는 것 이 유용 합 니 다.특정 디 스 플레이 대상 이 시각 영역 경계 밖 에 있 는 지 확인 하려 면 이 값 을 사용 해 야 합 니 다.
SWF 영역 크기 (SWF 크기: loaderInfo. width / loaderInfo. height)
SWF 파일 의 원본 width 와 height 값 을 얻 으 려 면 loaderInfo. width 와 loaderInfo. height 를 사용 해 야 합 니 다.그들 은 속성 만 읽 고 변 하지 않 는 다.이 값 들 은 컴 파일 할 때 SWF 파일 에 하 드 인 코딩 됩 니 다. (편집 할 때 크기 를 지정 합 니 다.)Adobe 의 문 서 는 이 사 이 즈 를 '이름 (nominal)' SWF 파일 크기 라 고 부 릅 니 다.이 속성 에 접근 하기 전에 SWF 내용 (content) 이 성공 적 으로 불 러 올 때 까지 기 다 려 야 접근 할 수 있 습 니 다.
loaderInfo.addEventListener(Event.COMPLETE,on_loadComplete);

function on_loadComplete(e:Event):void
{
	trace("swf width:" + loaderInfo.width);
	trace("swf height:" + loaderInfo.height);
}
외부 내용 을 불 러 오 면
var ldr:Loader = new Loader();
ldf.contentLoaderInfo.addEventListener(Event.COMPLETE,on_loadComplete);

function on_loadComplete(e:Event):void
{
	var ldrInfo:LoaderInfo = e.target as LoaderInfo;
	if(ldrInfo)
	{
		trace(ldrInfo.width);
		trace(ldrInfo.height);
	}
}
외부 SWFs 모듈 을 관리 하 는 응용 프로그램 (application) 이 있 을 때 SWF 원본 크기 (nominal demensions) 가 유용 하 다 는 것 을 알 고 있 습 니 다. 이 때 불 러 오 는 SWF 에 얼마나 많은 화면 공간 을 할당 해 야 하 는 지 알 고 싶 을 수도 있 습 니 다.Loader 대상 에 불 러 온 내용 (content) 의 원본 너비 와 높이 (Loader 대상 의 너비 와 높이 는 변 경 될 수 있 지만, loader Info. width 와 loader Info. height 는 변 하지 않 습 니 다) 를 알 고 싶 습 니 다.
결론 (결론)
일반적으로 무대 (Stage) 의 크기, 시각 영역 크기, SWF 파일 의 원본 크기 등 세 가지 사 이 즈 는 아무런 연관 이 없다.현재 시각 영역 의 정확 한 크기 를 알 고 싶다 면 stage. stage Width 와 stage. stage Height 를 사용 하 세 요.SWF 파일 이 컴 파일 된 원본 크기 를 알 고 싶다 면 loaderInfo. width 와 loaderInfo. height 를 사용 하 십시오.전체 디 스 플레이 대상 이 차지 하 는 지역 의 종합 크기 를 알 고 싶다 면 stage. width 와 stage. height 속성 (getBounds () 또는 getRect () 방법 으로 도 사용 할 수 있 습 니 다.이 세 쌍 의 속성 은 사람 을 현혹 시 키 기 쉬 우 므 로 위의 글 이 세 사람 사이 의 차 이 를 정리 하 는 데 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기