警告:3D DisplayObjectはレンダリングしません。その寸法(6711131、6711131)は大きすぎて描画できません
-
25-10-2019 - |
質問
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)は大きすぎて描画できません。
2つの画像を使用しています。1つはあります 152.292バイト, 、もう一方は持っています 170.663バイト
解決
それは z
オブジェクトのプロパティは0ではありません(3Dです)、または3Dに子供がいます。たとえば、2倍のフラッシュ3Dでオブジェクトをサイズ変更すると、結果は2x(平面で考えてください)が2Dでオブジェクトを描画し、長方形を描画する大きなものになります。
オブジェクトが回転すると、この結果を拡大します。
この例では、違いは31ピクセルですが、大きな画像では、6711131ピクセルの場合のように、違いは巨大です。
他のヒント
エラーメッセージには、3D DisplayObjectが記載されていますが、3Dにある種のスケーリング /視点があり、その驚くべき見た目の670万ピクセルの寸法に画像を吹き飛ばすのでしょうか? :)
このメッセージは、(他のレスポンダーが言ったように)、あなたがいくつかの3D変換をローダーまたはディスプレイツリー内のそのアセンダントの一部に適用していることを示唆しています。
ただし、予想外の巨大なサイズの原因はおそらく別のものです。
これは通常、幅または高さのプロパティをまだ空のときにディスプレイオブジェクトに設定しようとするときに発生します(つまり、ローダーが読み込みが終了する前)。そうする場合(つまり、オブジェクトがまだ空である場合、someobject.width = 240)、無限のスケーリングを適用します。その後、オブジェクトが実際に何かで満たされているとすぐに(つまり、ローダーが読み込まれます)、あなたは巨大なオブジェクトになります。
あなたの場合、ローダーが読み込みが終了したときに寸法を設定しているようです(そうすべきではありません)。しかし、オブジェクトの幅/高さのプロパティが必要なときに更新されなかったフラッシュランタイムバグを経験したことを覚えています。
この場合、回避策は、幅と高さのプロパティではなく、Scalexとスケールのプロパティを直接設定することです。ロードされた画像の予想される寸法を事前に知っている場合は、次のことを書くことができます。
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;
}