2017-08-03 17 views
0

easeljs stage.getBounds()がnullを返すのはなぜですか?この例では

var canvas = document.getElementById("testCanvas"); 
 
var stage = new createjs.Stage(canvas); 
 

 
function drawRectangle(){ 
 
var rect = new createjs.Shape(); 
 
rect.graphics.beginFill("#000").drawRect(10, 10, 100, 100); 
 
stage.addChild(rect); 
 
} 
 

 
function drawShapes(){ 
 
    drawRectangle(); 
 
\t stage.update(); 
 
} 
 

 
drawShapes(); 
 
// Why does this call log null? 
 
console.log(stage.getBounds());
<script src="https://cdnjs.cloudflare.com/ajax/libs/EaselJS/0.8.0/easeljs.min.js"></script> 
 
<canvas id="testCanvas" width="600" height="150"></canvas>

stage.getBounds();はnullを返すされます。なぜnullを返すのですか? docsによると、ステージのバウンディングボックスの大きさを表す矩形オブジェクトを返すことになっています。

この使用法が間違っている場合は、オブジェクトの寸法を取得するための正しい使い方は何ですか?

答えて

2

ステージのオブジェクトは、独自の境界を計算できません。 (元の形状)

ないすべての表示オブジェクトは、自分の限界を計算することができます。同じgetBounds()documentation

は、それは次のように表示されます。これらのオブジェクトの場合は、setBoundsを使用すると、コンテナ境界を計算するときにそのオブジェクトが含まれます。

それはケースだ場合はドキュメントが言うように、手動でオブジェクトの境界を設定するsetBounds()方法(documentation)を使用することができます:あなたのコードの場合は

setBounds(x,y,width,height) 

は:

stage.setBounds(0,0,600,150); // (0,0), at the same size of the canvas 
+1

Stageは、次の場合に境界を返す必要があります。a)この例のように境界が設定されている。 b)境界(ビットマップ、スプライト、テキスト)を計算することができる子コンテンツを有する。それはどんな容器と同じです。グラフィックスは境界線を計算できません。そのため、デモではステージ境界が返されません。 – Lanny

関連する問題