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