package { import flash.display.DisplayObject; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.utils.getTimer; public class StageSizeCheck extends Sprite { private var _traceTxt:TextField; private var _count:int; public function StageSizeCheck() { init(); } public function init():void { initStage(); //リサイズとかをtraceするための準備をします initEvent(); //resizeイベントをリスンしたあとにStageAlignを設定するとresizeイベントが走る //initStage(); //このTextFieldをステージの中心に置きたい var txtField:TextField = addChild(new TextField) as TextField; initTF(txtField); txtField.text = "うんこ"; //stageの真ん中にもっていく centering(txtField); } private function initStage():void { stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; } private function initTF(txtField:TextField):void { var txtFormat:TextFormat = txtField.getTextFormat(); txtFormat.bold = true; txtFormat.size = 150; txtField.defaultTextFormat = txtFormat; txtField.width = stage.stageWidth; txtField.autoSize = TextFieldAutoSize.CENTER; } private function initEvent():void { _traceTxt = addChild(new TextField) as TextField; _traceTxt.x = 300; _traceTxt.autoSize = TextFieldAutoSize.LEFT; //_traceTxt.width = 100; _traceTxt.height = 500; //stageの幅高が0だったら監視してどうなってるかを見張る stage.addEventListener(Event.RESIZE, tracer); if (isStageSizeZero()) { addEventListener(Event.ENTER_FRAME, monitorStage); addTraceText("stageはゼロになっています。IEとmacのFFかな"); addEventListener(Event.ADDED_TO_STAGE, tracer); } else { addTraceText("stageはゼロじゃないです"); } addStageSizeText(); } //---------------------------------- // イベントとかのトレース //---------------------------------- private function tracer(event:Event):void { addTraceText(event.toString()); } private function addTraceText(text:String):void { _traceTxt.appendText("time :" + getTimer() + " :" + text + "\n"); traceTxtPos(); } private function addStageSizeText():void { addTraceText("Stage Size : w * h = " + stage.stageWidth + " * " + stage.stageHeight); } private function traceTxtPos():void { _traceTxt.x = stage.stageWidth - _traceTxt.textWidth - 10; } /** * エンターフレームのやつ * @param event */ private function monitorStage(event:Event):void { ++_count; addTraceText("_enterFrameCount : " + _count); addStageSizeText(); if (!isStageSizeZero()) { //traceTxtPos(); removeEventListener(Event.ENTER_FRAME, monitorStage); } } private function centering(txtField:TextField):void { txtField.x = (stage.stageWidth - txtField.textWidth) * 0.5; txtField.y = (stage.stageHeight - txtField.textHeight) * 0.5; } /** * ステージサイズがゼロかどうか * @return */ private function isStageSizeZero():Boolean { return stage.stageWidth * stage.stageHeight == 0; } } }