CODEONWORT

resize 이벤트도 받으면서 exactFit, showAll 비율 흉내내기 본문

Season 1/플래시

resize 이벤트도 받으면서 exactFit, showAll 비율 흉내내기

codeonwort 2011. 6. 13. 14:46

플래시 플레이어 창의 크기를 변경하면 resize 이벤트가 전달되는데, stage.scaleMode가 "noScale" 이어서 표시 영역의 크기는 변하지 않는다는 조건이 깔려있어야 이 이벤트가 전달된다. 그러니까 플래시 플레이어 영역을 다 채우기 위해 exactFit으로 설정하거나 표시 영역이 다 보이면서 최대한 크게 그리는 showAll으로 설정하면 resize 이벤트를 받을 수 없다. (noBorder는 필요가 없을 것 같아서 논외 -_-a)

하지만 stage.scaleMode = "noScale"으로 설정하고 문서 자체의 scaleX, scaleY를 조절해버리면 resize 이벤트도 받고 exactFIt, showAll 비율도 흉내낼 수 있다.

import flash.events.Event
stage.scaleMode = "noScale"
stage.align = "topLeft"
var W0:Number = stage.stageWidth
var H0:Number = stage.stageHeight
stage.addEventListener(Event.RESIZE, f)

// exactFit
function f(e:Event):void {
this.scaleX = stage.stageWidth / W0
this.scaleY = stage.stageHeight / H0
}

// showAll
function f(e:Event):void {
this.scaleX = this.scaleY =
Math.min(stage.stageWidth / W0, stage.stageHeight / H0)
this.x = (stage.stageWidth - this.width) / 2
this.y = (stage.stageHeight - this.height) / 2
}
1 Comments
댓글쓰기 폼