Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 流体闪光布局_Flash_Actionscript 3 - Fatal编程技术网

Flash 流体闪光布局

Flash 流体闪光布局,flash,actionscript-3,Flash,Actionscript 3,我试图让我的主类调整到浏览器窗口的大小。我正在舞台上收听Event.RESIZE,更新我的宽度/高度以匹配舞台宽度/舞台高度,并绘制一个矩形以显示它有多大 当我调整大小时,每隔一次事件触发时,它就会在大小之间闪烁。宽度和高度在两种情况下都是正确的,但在“小”情况下,所有东西都在一个小盒子中 这是我的密码 package { import flash.display.Sprite; import flash.display.StageAlign; import flas

我试图让我的主类调整到浏览器窗口的大小。我正在舞台上收听Event.RESIZE,更新我的宽度/高度以匹配舞台宽度/舞台高度,并绘制一个矩形以显示它有多大

当我调整大小时,每隔一次事件触发时,它就会在大小之间闪烁。宽度和高度在两种情况下都是正确的,但在“小”情况下,所有东西都在一个小盒子中

这是我的密码

package
{
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.text.TextField;

    public class main extends Sprite
    {
        public function main()
        {
            stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;

            stage.addEventListener(Event.RESIZE, onResize);

            var text:TextField = new TextField();
                text.text = "Some Text";

            addChild(text);
        }

        private function onResize(event:Event):void
        {
            this.width = stage.stageWidth;
            this.height = stage.stageHeight;

            trace("RESIZE " + width + " " + height);

            this.graphics.clear();
            this.graphics.beginFill(0x000000, 0.5);
            this.graphics.drawRect(0, 0, this.width, this.height);
        }
    }
}

正确的方法是什么?我做错了什么?谢谢

看起来你的精灵做了正确的事情,但是文本字段是导致问题的原因。因此,如果同时更新其宽度和高度:

package
{
 import flash.display.Sprite;
 import flash.display.StageAlign;
 import flash.display.StageScaleMode;
 import flash.events.Event;
 import flash.text.TextField;

 public class asProj extends Sprite
 {
  private var text:TextField;

  public function asProj()
  {
   stage.align  = StageAlign.TOP_LEFT;
   stage.scaleMode = StageScaleMode.NO_SCALE;

   stage.addEventListener(Event.RESIZE, onResize);
   text = new TextField();
   text.text = "Some Text";

   addChild(text);
  }

  private function onResize(event:Event):void
  {
   this.width = stage.stageWidth;
   this.height = stage.stageHeight;

   text.width = this.width;
   text.height = this.height;

   trace("RESIZE " + this.width + " " + this.width);

   this.graphics.clear();
   this.graphics.beginFill(0x000000, 0.5);
   this.graphics.drawRect(0, 0, this.width, this.height);
  }
 }
}

看起来你的精灵做了正确的事情,但是文本字段是导致问题的原因。因此,如果同时更新其宽度和高度:

package
{
 import flash.display.Sprite;
 import flash.display.StageAlign;
 import flash.display.StageScaleMode;
 import flash.events.Event;
 import flash.text.TextField;

 public class asProj extends Sprite
 {
  private var text:TextField;

  public function asProj()
  {
   stage.align  = StageAlign.TOP_LEFT;
   stage.scaleMode = StageScaleMode.NO_SCALE;

   stage.addEventListener(Event.RESIZE, onResize);
   text = new TextField();
   text.text = "Some Text";

   addChild(text);
  }

  private function onResize(event:Event):void
  {
   this.width = stage.stageWidth;
   this.height = stage.stageHeight;

   text.width = this.width;
   text.height = this.height;

   trace("RESIZE " + this.width + " " + this.width);

   this.graphics.clear();
   this.graphics.beginFill(0x000000, 0.5);
   this.graphics.drawRect(0, 0, this.width, this.height);
  }
 }
}

问题是,宽度和高度设置器的默认实现只是scaleX和scaleY的别名。。。当您有一个宽度为100的精灵,并将其宽度设置为200时,它只是水平拉伸因子2。。。同时,默认的getter只返回屏幕上的有效宽度和高度,所以如果您绘制精灵,它的宽度和高度会相应地更新

这应该非常有效:

            private function onResize(event:Event):void
            {
                    this.graphics.clear();
                    this.graphics.beginFill(0x000000, 0.5);
                    this.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
            }

问题是,宽度和高度设置器的默认实现只是scaleX和scaleY的别名。。。当您有一个宽度为100的精灵,并将其宽度设置为200时,它只是水平拉伸因子2。。。同时,默认的getter只返回屏幕上的有效宽度和高度,所以如果您绘制精灵,它的宽度和高度会相应地更新

这应该非常有效:

            private function onResize(event:Event):void
            {
                    this.graphics.clear();
                    this.graphics.beginFill(0x000000, 0.5);
                    this.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
            }

令人惊叹的。。。但这没有任何意义。设置文本字段的宽度和高度使其保持较小(这正是我想要的,但它为什么工作?)。而且,它显然在做一些奇怪的事情。如果我快速缩小窗口,文本字段似乎会缩小一会儿,然后又变大。文本字段的大小和字体大小是两码事。使用我的代码,文本字段的大小在改变,但字体大小保持不变。如果给TextField一个背景色,您可以理解我的意思:text.background=true;text.backgroundColor=0xff6666;我认为当你快速调整窗口大小时,你看到的只是调整大小和文本字段更新之间的延迟。back2dos的解决方案是个更好的主意。太棒了。。。但这没有任何意义。设置文本字段的宽度和高度使其保持较小(这正是我想要的,但它为什么工作?)。而且,它显然在做一些奇怪的事情。如果我快速缩小窗口,文本字段似乎会缩小一会儿,然后又变大。文本字段的大小和字体大小是两码事。使用我的代码,文本字段的大小在改变,但字体大小保持不变。如果给TextField一个背景色,您可以理解我的意思:text.background=true;text.backgroundColor=0xff6666;我认为当你快速调整窗口大小时,你看到的只是调整大小和文本字段更新之间的延迟。back2dos的解决方案是一个更好的主意。这是有道理的。我已经很久没有在flash中工作了(这里是FlexGuy)。如果没有额外的帮助,宽度和高度真的很无用。谢谢我最后添加了一个变量来存储explicitWidth和explicitHeight。然后,当宽度和高度发生变化时,我会更新该变量,并让图形根据该变量而不是“实际”的宽度/高度进行绘制。我已经很久没有在flash中工作了(这里是FlexGuy)。如果没有额外的帮助,宽度和高度真的很无用。谢谢我最后添加了一个变量来存储explicitWidth和explicitHeight。然后,当宽度和高度发生变化时,我会更新该变量,并让图形根据该变量而不是“实际”宽度/高度进行绘制。