警告:3D DisplayObject不会呈现。它的尺寸(6711131,6711131)太大而无法绘制

StackOverflow https://stackoverflow.com/questions/5326401

我在BlackBerry Playbook的ActionScript 3.0上非常新。

我正在尝试调整装有加载程序类的图像大小。但是,当我使用此功能设置其新尺寸时:

private function loaded(event:Event):void
{
    var targetLoader:Loader = Loader(event.target.loader);
    targetLoader.height = 240;
    targetLoader.width = 240;
}

我收到以下错误:

警告:3D DisplayObject不会呈现。它的尺寸(6711131,6711131)太大而无法绘制。

我正在使用两个图像:一个图像 152.292字节, ,另一个 170.663字节

有帮助吗?

解决方案

那是因为 z 您的对象的属性不是0(以3D为单位),或者在3D中有一个孩子,这是很大的。当您在Flash 3D中调整对象大小时,例如2x,结果可能不是2倍(在平面中考虑)闪光灯以2D绘制对象,并且矩形要大。

当对象旋转时,您会放大此结果:

enter image description here

在此示例中,差异为31像素,但是在较大的图像中,差异将是巨大的,就像您的6711131像素一样

其他提示

错误消息说3D DisplayObject,可能是您在3D中具有某种缩放 /透视图,它会将您的图像吹到那个令人惊叹的670万像素尺寸的外观上? :)

该消息暗示(正如其他响应者所说的那样)您将某些3D转换应用于显示树中的装载机或其某些升序。

但是,出乎意料的巨大尺寸的原因可能是另一个。

通常,当尝试将宽度或高度属性设置为显示对象时(即加载程序完成加载之前)时,通常会发生这种情况。如果这样做(即某个对象仍然为空时,请width = 240),将其应用于无限缩放;然后,一旦对象实际上填充了某些东西(即装载机完成加载),您最终会得到一个巨大的对象。

在您的情况下,似乎当加载程序完成加载时,您正在设置尺寸(因此不应该发生);但是,我记得遇到闪存运行时错误,在该错误时未更新对象的宽度/高度属性,这完全导致了此问题,尽管我不确定这是您的情况。

如果是这种情况,解决方法是直接设置Scalex和Scaley属性,而不是宽度和高度属性。如果您事先知道已加载图像的预期尺寸,则可以编写:

private function loaded(event:Event):void
{
  var targetLoader:Loader = Loader(event.target.loader);
  targetLoader.scaleY = targetLoader.scaleX = 240/EXPECTED_WIDTH_HERE;
}

否则,您可以使用LoaderInfo对象的宽度和高度属性,而不是加载器对象的对象。这些告诉您已加载图像的“标称”大小:

private function loaded(event:Event):void
{
  var targetLoader:Loader = Loader(event.target.loader);
  targetLoader.scaleY = targetLoader.scaleX = 240/targetloader.contentLoaderInfo.width;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top