AS3:全屏不会让我的影片剪辑全部完成

时间:2011-10-13 02:52:14

标签: actionscript-3 random generator fullscreen movieclip

好吧,我已经尝试了很多方法让我的游戏在全屏运行,这似乎是不可能的。这是我到目前为止所尝试的内容:

代码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 个答案:

答案 0 :(得分:1)

舞台调整为全屏幕,必须在用户操作上完成,例如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;
}

答案 1 :(得分:0)

尝试stage的{​​{3}}属性。这里还有信息:scalemode

答案 2 :(得分:0)

我认为代码是在舞台实际切换到全屏之前运行的。试试这个:

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);
  }
}