读取stage.stage的奇怪行为当Bandwidth Profiler打开时的高度

时间:2010-02-13 12:39:32

标签: flash actionscript-3

当您在Flash IDE中打开Bandwith Profiler时,其他任何人在检查stage.stageHeight时遇到了奇怪的行为和意外的值?

说,我一直用它来测试Perlin Noise的东西:

package {

    import flash.display.StageAlign;
    import flash.display.StageScaleMode;

    import flash.display.Sprite;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.events.Event;
    import flash.geom.Point;

    [SWF(width="550", height="400", backgroundColor="#000000", frameRate="60")]
    public class Clouds extends Sprite {
        private var _bitmap:BitmapData;
        private var _xoffset:int = 0;
        private var _yoffset:int = 0;

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

            trace("stage.stageHeight: "+stage.stageHeight);

            _bitmap = new BitmapData(stage.stageWidth, stage.stageHeight,true, 0xffffffff);
            var image:Bitmap = new Bitmap(_bitmap);
            addChild(image);
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }

        public function onEnterFrame(event:Event):void {
            _xoffset = _xoffset + Math.random()*4 -2;
            _yoffset = _yoffset + Math.random()*3;
            var point:Point = new Point(_xoffset, _yoffset);

            _bitmap.perlinNoise(200, 100, 3, 1000, false, true,
                            1, true, [point, point]);
        }
    }
}

如您所见,swf的高度设置为400 .. 当使用测试影片执行control-enter时,跟踪返回400 ..现在,如果你在Bandwidth Profiler打开时尝试这个,它将返回300,而Sprite只会扩展到300高度。

任何有同样经历的人吗?

2 个答案:

答案 0 :(得分:0)

这没什么奇怪的。您设置的舞台高度是默认值,但如果用户,浏览器或本例中FlashIDE调整播放器窗口的大小,舞台大小可能会有所不同(因为UI会按比例为分析器分配一些空间)。

如果您需要特定的基数来进行缩放等,您可能需要创建自己的WIDTH / HEIGHT常量。

答案 1 :(得分:0)

绝对 - 据我所知,该错误已在CS4中修复。这个错误曾经困扰我很长一段时间。这个问题只发生在测试环境中,所以你可以放心,在HTML页面中包含这个问题就会消失。

我唯一真正建议的是编辑剪辑然后打开带宽分析器 - 或者如果$允许的话,升级你的flash ide。

你并不孤单: http://www.google.com/search?hl=en&q=bandwidth+profiler+bug