我正在将某人的createjs应用程序导入到应用程序加载器中,该应用程序加载器将每个开发人员应用程序javascript导入到全局画布。该应用程序是独立运行的,但是当我动态加载javascript时,我会在getBounds()
函数周围出现一些奇怪的行为。
我有一些像这样的文字:
dialogText = new createjs.Text(text, 'bold ' + (28 * scale) + 'px Calibri', '#FFFFFF');
然后我使用dialogText.getBounds()
返回null
。
我尝试使用控制台记录dialogText,我可以看到它已设置,并且有一个值为_bounds
的值null
。
当绘制到画布中的元素时,这些值会在什么时候设置?
注意:在运行createjs.Container()
之前,我已经将文本添加到设置了其边界的getBounds()
。
答案 0 :(得分:1)
_bounds
属性反映了在DisplayObject上手动设置的值 - 如果您知道无法计算它的边界(如Shape),这将非常有用。除非您直接设置,否则它始终为null
。
我测试了你的代码,看起来很好。您确定scale
或text
值不为空吗?也许硬编码他们看看它是否有效。
你在某个地方有样品吗?我在the GitHub issue you posted注意到你提到它在没有RequireJS的情况下工作正常(尽管你在这里没有提到)。我肯定会确保正确设置这些值。
以下是fiddle以及simpler one with no EaselJS stage。请注意,我的计算机上安装了Calibri,因此如果要加载它,可能会得到不同的结果。
示例代码:
var dialogText = new createjs.Text("This is some text", 'bold ' + (28 * 1.5) + 'px Calibrix', '#FFFFFF');
console.log(">>",dialogText.getBounds());
答案 1 :(得分:1)
为了快速参考,我粘贴了EaselJS关于 getBounds()的更新:
(这可以追溯到" 2013年8月21日",现在还不确定这是否仍然有必要,但使用 setBounds(x,y,w,h) [2017年]实际上帮助我了Shapes!)