2017-08-03 24 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

阶段应该返回边界如果a)它有像这个例子中设置的边界;或b)它具有可以计算边界的子内容(位图,精灵,文本)。它与任何容器相同。图形无法计算边界,这就是为什么您的演示不会返回阶段边界。 – Lanny