0

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

4

3 回答 3

1

那是因为z您的对象的属性不是 0(在 3D 中也是如此),或者它在 3D 中有一个子对象,绘制起来太大了。当您在 Flash 3D 中调整对象的大小时,例如 2x,结果可能不是 2x(在平面上考虑)flash 在 2D 中绘制对象并且矩形太大而无法绘制。

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

在此处输入图像描述

在此示例中,差异为 31 像素,但在较大的图像中差异会很大,例如您的 6711131 像素

于 2011-03-16T14:14:57.773 回答
0

该消息表明(正如其他响应者所说)您正在对 Loader 或其在显示树中的某些上级应用一些 3D 转换。

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

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

在您的情况下,您似乎在 Loader 完成加载时正在设置尺寸(所以它不应该发生);但是我记得遇到过 Flash 运行时错误,其中对象的 width/height 属性在应该更新的时候没有更新,导致了这个问题,尽管我不是 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;
}

否则,您可以使用 LOADERINFO 对象的 width 和 height 属性而不是 Loader 对象的属性。这些告诉您加载图像的“标称”大小:

private function loaded(event:Event):void
{
  var targetLoader:Loader = Loader(event.target.loader);
  targetLoader.scaleY = targetLoader.scaleX = 240/targetloader.contentLoaderInfo.width;
}
于 2011-09-10T15:56:14.763 回答
0

错误消息显示 3D DisplayObject,可能是您在 3D 中有某种缩放/透视,这会将您的图像放大到令人惊叹的 670 万像素尺寸?:)

于 2011-03-16T14:07:33.270 回答