当您在Flash IDE中打开Bandwith Profiler时,是否有人在检查stage.stageHeight时遇到过奇怪的行为和意想不到的值?
比如说,我一直在用这个来测试Perlin噪声:
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的高度。
有没有人有同样的经历??
发布于 2010-02-14 03:09:52
这没什么奇怪的。您设置的舞台高度是默认高度,但舞台大小可能会因用户、浏览器或本例中的FlashIDE调整播放器窗口的大小而有所不同(因为UI将按比例为分析器分配一些空间)。
如果您需要特定的基数用于缩放等,您可能希望创建自己的宽度/高度常量。
发布于 2010-02-16 19:39:47
完全正确--据我所知,这个错误已经在CS4中修复了。这个bug曾经困扰了我很长一段时间。这个问题只发生在测试环境中,所以您可以放心,包装在HTML页面中这个问题就会消失。
我唯一能建议的就是编译剪辑,然后打开带宽分析器--或者如果$允许的话,升级你的flash ide。
你并不孤单:http://www.google.com/search?hl=en&q=bandwidth+profiler+bug
https://stackoverflow.com/questions/2257510
复制相似问题