AS3: в полноэкранном режиме я не делаю клипы - PullRequest
0 голосов
/ 13 октября 2011

Ну, ребята, я пробовал много способов запустить мою игру в полноэкранном режиме, это кажется невозможным. Вот что я пробовал до сих пор:

КОД 1:

stop();
stage.stageWidth = Capabilities.screenResolutionX;
stage.stageHeight = Capabilities.screenResolutionY;


var arrayStars:Array = [];
for(var i:int = 0; i<260; i++)
{
    var star:Star = new Star();

    star.x = Math.floor(Math.random() * stage.stageWidth);
    star.y = Math.floor(Math.random() * stage.stageHeight);

    addChild(star);
    arrayStars.push(star);
}

КОД 2:

stop();
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
var sX:Number =stage.stageWidth;
var sY:Number = stage.stageHeight;


var arrayStars:Array = [];
for(var i:int = 0; i<260; i++)
{
    var star:Star = new Star();

    star.x = Math.floor(Math.random() * sX);
    star.y = Math.floor(Math.random() * sY);

    addChild(star);
    arrayStars.push(star);
}

КОД 3: аналогично коду 2, но вместо использования переменных sX и sY я использовал непосредственно stage.stageWidth и stage.stageHeight. Основная проблема не в том, чтобы заставить приложение работать в полноэкранном режиме, а в том, чтобы клипы оставались в области, не покрывая весь экран. Я думаю, что проблема, возможно, не связана с полноэкранными методами, может быть, с генератором случайных чисел?

Ответы [ 3 ]

1 голос
/ 13 октября 2011

Изменение размера сцены до fullScreen и обратно должно выполняться пользователем, например, mouseClick:

Из документации: «Полноэкранный режим запускается в ответ на щелчок мыши или нажатие клавиши пользователем; фильм не может изменить Stage.displayState без ввода данных пользователем.»

static public function handleStageDisplayStateChange ( e : MouseEvent ) : void
{
    if ( stage.displayState == StageDisplayState.NORMAL )
        stage.displayState = StageDisplayState.FULL_SCREEN;
    else
        stage.displayState = StageDisplayState.NORMAL;
}
0 голосов
/ 13 октября 2011

Я думаю, что код выполняется до того, как сцена фактически переключается в полноэкранный режим. Попробуйте это:

private function OnFullScreenButtonMouseClick( _e:MouseEvent ):void {
  stage.addEventListener( Event.RESIZE, OnResize, false, 0, true );
  stage.align = StageAlign.TOP_LEFT;
  stage.scaleMode = StageScaleMode.NO_SCALE;
  stage.displayState = StageDisplayState.FULL_SCREEN;
}
...
function OnResize( event:Event ):void {
  var sX:Number =stage.stageWidth;
  var sY:Number = stage.stageHeight;


  var arrayStars:Array = [];
  for(var i:int = 0; i<260; i++)
  {
      var star:Star = new Star();

      star.x = Math.floor(Math.random() * sX);
      star.y = Math.floor(Math.random() * sY);

      addChild(star);
      arrayStars.push(star);
  }
}
0 голосов
/ 13 октября 2011

Попробуйте scalemode свойство stage. Здесь также есть информация: http://active.tutsplus.com/tutorials/actionscript/quick-tip-stretch-your-swf-with-stage-scalemode/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...