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

时间:2011-03-16 14:01:20

标签: actionscript-3 blackberry-playbook

我对于用于BlackBerry Playbook的ActionScript 3.0非常新。

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

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字节

3 个答案:

答案 0 :(得分:1)

那是因为你的对象的z属性不是0(因此是3D),或者它有一个3D的子项,它可以绘制得很大。当您在flash 3D中调整对象大小(例如2x)时,结果可能不是2x(在平面中思考)flash会在2D中绘制对象,而矩形将被绘制为大。

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

enter image description here

在此示例中,差异为31像素,但在较大的图像中,差异将是巨大的,例如6711131像素的情况

答案 1 :(得分:0)

错误信息显示3D DisplayObject,可能是因为你在3D中有某种缩放/透视效果会使你的图像达到惊人的670万像素尺寸? :)

答案 2 :(得分:0)

该消息表明(正如其他响应者所说)你正在将一些3D转换应用于Loader或其显示树中的一些优势。

然而,意外巨大的原因可能是另一个原因。

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

在您的情况下,似乎您在Loader完成加载时设置尺寸(因此不应该发生);但我记得遇到Flash运行时错误,其中对象的宽度/高度属性没有更新时应该导致这个问题,尽管我不是100%确定它是你的情况。

如果是这种情况,解决方法是直接设置scaleX和scaleY属性,而不是width和height属性。如果您事先知道加载图像的预期尺寸,您可以写:

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

否则您可以使用THE LOADERINFO OBJECT的宽度和高度属性而不是Loader对象的宽度和高度属性。它们会告诉您加载图像的“标称”大小:

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