当您在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高度。
任何有同样经历的人吗?
答案 0 :(得分:0)
这没什么奇怪的。您设置的舞台高度是默认值,但如果用户,浏览器或本例中FlashIDE调整播放器窗口的大小,舞台大小可能会有所不同(因为UI会按比例为分析器分配一些空间)。
如果您需要特定的基数来进行缩放等,您可能需要创建自己的WIDTH / HEIGHT常量。
答案 1 :(得分:0)
绝对 - 据我所知,该错误已在CS4中修复。这个错误曾经困扰我很长一段时间。这个问题只发生在测试环境中,所以你可以放心,在HTML页面中包含这个问题就会消失。
我唯一真正建议的是编辑剪辑然后打开带宽分析器 - 或者如果$允许的话,升级你的flash ide。
你并不孤单: http://www.google.com/search?hl=en&q=bandwidth+profiler+bug