【问题标题】:Set attributes object (text), with ID and NAME itself search. - KineticJS设置属性对象(文本),用 ID 和 NAME 本身搜索。 - KineticJS
【发布时间】:2013-08-30 17:23:55
【问题描述】:

我有一个舞台,里面有一个图层,图层里面有一个组。

如果我的对象 (var complexText = new Kinetic.Text()) 有 name: 'name1'id: 'id5', 是否可以仅使用id 更改setFill()setText() 的填充和文本?

我的代码不起作用:

var stage = new Kinetic.Stage({ ... });
var layer = new Kinetic.Layer();
var group1 = new Kinetic.Group({ draggable: false });
layer.add(group1);
stage.add(layer);

var menuTab = new Kinetic.Rect({... , id: 'id1', name: 'name1'});      
var complexText = new Kinetic.Text({... , id: 'id5', name: 'name1'});      
group1.add(menuTab);
group1.add(complexText);

menuTab.on('click', function() {
    var textChange = stage.get('#id5');  // didn't work
    // and .... var textChange = layer.get('#id5');
    // and .... var textChange = group1.get('#id5'); //didn't work

        textChange.setFill('#BB9999');
        textChange.setText('f3');
        alert( textChange.getText() );
        //this.setText('3');
    layer.draw();
});

【问题讨论】:

    标签: html object canvas kineticjs


    【解决方案1】:

    你必须使用

    var textChange = stage.get('#id5')[0];
    // or .... var textChange = layer.get('#id5')[0];
    // or .... var textChange = group1.get('#id5')[0];
    
    textChange.setFill('#BB9999');
    textChange.setText('f3');
    

    【讨论】:

    • 好的。提供类似的解决方案使用它:var textObjects = group1.get('#id5'); var textObject = textObjects.toArray()[0]; textObject.setText('newText');
    • link : var ImageObjects = selectedGroup.get("Image"); var ImageObject=ImageObjects.toArray()[0];
    • 如果您通过 ID 进行选择,我们知道只有 一个 具有该 ID 的对象,因此我们不需要使用 toArray () 方法。如果您通过 name 选择一组对象,则 toArray 方法可能适用。
    • 我了解/在示例中具有不同的 ID('id1''id5'),但名称相同。我需要对所有选项进行理论培训。谢谢。指出了这个 link ,以及我给 ID 的第二条消息。
    • 您也可以使用stage.get('.name1'); 之类的名称按名称进行选择,请参阅这些教程:Get By Id Get By Name Get By Type
    猜你喜欢
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2014-05-04
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多