2014-11-24 2 views
0

Я пытаюсь создать игру с полноэкранным.Храните товар на одном и том же месте монитора независимо от размера окна/позиции

Когда я добавить объект в stage в полноэкранном режиме, то хотелось бы, чтобы остаться в тех же координатах (например, 1000 пикселей) по отношению к монитора, когда я выйти из полноэкранного режима.

Как я могу заставить объект перемещаться в одно и то же место при выходе из полноэкранного режима?

+0

Я не понимаю вашего вопроса. Вы хотите, чтобы элемент оставался в том же относительном положении (на мониторе) независимо от положения/размера окна? – BadFeelingAboutThis

+0

Да, это то, что я имел в виду –

+0

Это довольно сложный вопрос (хотя, конечно же, умелый). что ты уже испробовал? – BadFeelingAboutThis

ответ

1

Чтобы получить ваш начал:

Что-то вдоль этих линий, что вам нужно сделать:

stage.align = StageAlign.TOP_LEFT; //you'll need to running a top-left no-scale swf for this to work 
stage.scaleMode = StageScaleMode.NO_SCALE; 

var itemPoint:Point = new Point(150,150); //the point on the monitor the object should reside 

//call this anytime the item needs to be redrawn (eg when the window changes size or position) 
function updatePos(e:Event = null){ 
    //We need to also account for the chrome of the window 
    var windowMargin:Number = (stage.nativeWindow.bounds.width - stage.stageWidth) * .5; //this is the margin or padding that between the window and the content of the window 
    var windowBarHeight:Number = stage.nativeWindow.bounds.height - stage.stageHeight - windowMargin; //we have to assume equal margin on the left/right/bottom of the window 

    item.x = itemPoint.x - stage.nativeWindow.x - windowMargin; 
    item.y = itemPoint.y - stage.nativeWindow.y - windowBarHeight; 
} 

stage.nativeWindow.addEventListener(NativeWindowBoundsEvent.MOVE, updatePos); //we need to listen for changes in the window position 
stage.nativeWindow.addEventListener(NativeWindowBoundsEvent.RESIZE, updatePos); //and changes in the window size 

//a click listener to test with 
stage.addEventListener(MouseEvent.CLICK, function(e:Event):void { 
    if(stage.displayState == StageDisplayState.FULL_SCREEN_INTERACTIVE){ 
     stage.displayState = StageDisplayState.NORMAL; 
    }else{ 
     stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE; 
    } 
}); 

updatePos(); 
+0

Не могли бы вы объяснить, что делает эта строка кода? –

+0

stage.displayState = (stage.displayState == StageDisplayState.FULL_SCREEN_INTERACTIVE? StageDisplayState.NORMAL: StageDisplayState.FULL_SCREEN_INTERACTIVE); –

+0

Это просто переключает полноэкранный режим. Это встроенный оператор if. Поэтому, если текущий displayState является полноэкранным, назначьте его «нормальным», иначе назначьте его «полноэкранным интерактивным». Я отредактировал вопрос, чтобы сделать его регулярным if, если это помогает (они делают точно то же самое) – BadFeelingAboutThis

Смежные вопросы