我正在使用 KineticJS ,我正在为图层添加一些矩形:
var kNode = new Kinetic.Rect({
x: 300,
y: 300,
cornerRadius: 8,
fill: '#ffffff',
strokeWidth: 1,
stroke: '#cccccc',
width: 200,
height: 100,
draggable: true
});
kNode.customAttrs = new Object(); // attributes that I need as reference
kNode.customAttrs.chosen = 0;
我需要:
提前感谢任何线索。
修改
我不明白为什么使用
console.log(stage);
jsfiddle 我得到此输出(Chrome开发者控制台):
Kinetic.Stage {nodeType: "Stage", children: Kinetic.Collection[1], _id: 1, eventListeners: Object, attrs: Object…}
但在我的应用中,我得到:(代码相同)
Kinetic.Stage {children: Kinetic.Collection[1], _id: 1, eventListeners: Object, attrs: Object, cache: Object…}
事实上,如果我在jsfiddle上使用 stage.find()它可以工作,但在我的应用程序中没有(* 未捕获的TypeError:对象[对象对象]没有方法'查找'* )。
有任何线索吗?我在使用canvas元素时遇到了同样的问题,因为我得到了 prevObject ,但没有对象本身。
答案 0 :(得分:4)
您可以使用以下方式获取舞台中的所有矩形:
rects = stage.find("Rect");
rects.each(function (node) {
//do what u want
}
我认为这将解决您的问题
答案 1 :(得分:3)
在KineticJS中,id类似于html id:
// SET
kNode.setId(123);
// GET
//
// specify #123 to get an id
// .find returns a set so use [0] to get the first element
var id123 = stage.find("#123")[0];
id123.setFill("green");
在KineticJS中,名称类似于html类:
// SET
kNode.setName("chosen1");
// GET
// specify .chosen1 to get a name
var chosen1=stage.find(".chosen1");
chosen1.each(function(i){
i.setFill("blue");
});