我对于用于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字节
答案 0 :(得分:1)
那是因为你的对象的z
属性不是0(因此是3D),或者它有一个3D的子项,它可以绘制得很大。当您在flash 3D中调整对象大小(例如2x)时,结果可能不是2x(在平面中思考)flash会在2D中绘制对象,而矩形将被绘制为大。
旋转对象时,放大此结果:
在此示例中,差异为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;
}