Предупреждение: 3D DisplayObject не будет отображаться. Его размеры (6711131, 6711131) слишком велики для рисования - PullRequest
0 голосов
/ 16 марта 2011

Я очень новичок в ActionScript 3.0 для BlackBerry Playbook.

Я пытаюсь изменить размер изображения, загруженного с помощью класса 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 ]

1 голос
/ 16 марта 2011

Это потому, что свойство z вашего объекта не равно 0 (как и в 3D), или у него есть дочерний объект в 3D, который слишком велик для рисования.Когда вы изменяете размер объекта во Flash 3D, например, в 2 раза, результат может быть не в 2 раза (думайте в плоскости), Flash рисует объекты в 2D, и прямоугольник становится слишком большим для рисования.

Когда объекты поворачиваютсяувеличить этот результат:

enter image description here

В этом примере разница составляет 31 пиксель, но на больших изображениях разница будет огромной, как в вашем случае 6711131 пикселей

0 голосов
/ 10 сентября 2011

В сообщении предлагается (как уже говорили другие респонденты), что вы применяете какое-то трехмерное преобразование к загрузчику или некоторым его восходящим элементам в дереве отображения.

Однако причина неожиданного огромного размера, вероятноеще один.

Обычно это происходит при попытке установить свойство width или height для экранного объекта, когда он еще пуст (т.е. до завершения загрузки Loader).Если вы сделаете это (то есть someobject.width = 240, когда объект еще пуст), вы применяете к нему бесконечное масштабирование;потом, как только объект действительно будет заполнен чем-то (т.е. загрузчик заканчивает загрузку), вы получите огромный объект.

В вашем случае кажется, что вы устанавливаете измерение, когда загрузчик завершил загрузку(так не должно быть);однако я помню, что во время выполнения 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 вместо свойств объекта Loader.Они говорят вам «номинальный» размер загруженного изображения:

private function loaded(event:Event):void
{
  var targetLoader:Loader = Loader(event.target.loader);
  targetLoader.scaleY = targetLoader.scaleX = 240/targetloader.contentLoaderInfo.width;
}
0 голосов
/ 16 марта 2011

В сообщении об ошибке указывается 3D DisplayObject. Может быть, у вас есть какое-то масштабирование / перспектива в 3D, которое увеличило бы ваше изображение до удивительного размера в 6,7 миллиона пикселей?:)

...