【发布时间】:2013-03-05 00:52:46
【问题描述】:
所以 KineticJS 支持精灵,我在当前项目中使用精灵。有什么方法可以获取精灵对象的高度吗?
因为您可以像这样在 KineticJS 中获取每个对象的高度:
object.getHeight();
这也适用于获取宽度。
提前致谢!
【问题讨论】:
标签: height width sprite kineticjs dimensions
所以 KineticJS 支持精灵,我在当前项目中使用精灵。有什么方法可以获取精灵对象的高度吗?
因为您可以像这样在 KineticJS 中获取每个对象的高度:
object.getHeight();
这也适用于获取宽度。
提前致谢!
【问题讨论】:
标签: height width sprite kineticjs dimensions
Lavtron 的回答指的是 Spline,而不是 Sprite(看起来相似的词代表完全不同的事物!)。好消息,对于Sprite,您可以使用:
spriteObj.getHeight() 和 spriteObj.getWidth() 用于精灵,就像您对其他所有内容一样。
然而我发现你必须确保 height 和 width 属性首先在你的 sprite 对象的声明中明确指定,当你初始化它。否则,这些方法在以后调用时返回“未定义”。它不会自动测量高度并使用 getHeight() 返回,您必须确保在 Sprite 对象中将其指定为一个值(例如 32),以便 getHeight() 返回该值。
【讨论】:
getHeight() 为 Spline 返回 0。
您可以定义您的 getHeight 和 getWidth 函数:
Kinetic.Spline.prototype.getWidth = function(){
var points = this.getPoints();
var minX = points[0].x;
var maxX = points[0].x;
for(var i = 1; i < points.length;i++){
if(points[i].x < minX){
minX = points[i].x;
}
if(points[i].x > maxX){
maxX = points[i].x;
}
}
return maxX - minX;
}
Kinetic.Spline.prototype.getHeight = function(){
var points = this.getPoints();
var minY = points[0].y;
var maxY = points[0].y;
for(var i = 1; i < points.length;i++){
if(points[i].y < minY){
minY = points[i].y;
}
if(points[i].y > maxY){
maxY = points[i].y;
}
}
return maxY - minY;
}
但这是实际高度/宽度的近似值。 示例:http://jsfiddle.net/lavrton/EM35c/
【讨论】: