2012-12-04 67 views
1

我是JS和KineticJS的新手,想知道是否有人可以帮助我理解Kinetic.Stage节点的工作原理。我已经使用this tutorial作为起始位置 - 但希望能够通过单击按钮将对象(例如新的Kinetic.Text()或新的Kinetic.Group())追加到现有舞台上。kineticjs添加元素到舞台

我想要做的一个例子是在画布旁边有一个窗体,允许用户输入文本,单击“去”,并让“输入的文本”出现在画布内。

我试图申报“无功阶段”的的document.ready内,在全球范围内,想我可以从一个函数内部访问阶段,例如:

function writeTextToStage(stage) { 
    var text = new Kinetic.Text({ 
     x: 190, 
     y: 15, 
     text: 'Simple Text', 
     fontSize: 30, 
     fontFamily: 'Calibri', 
     textFill: 'green' 
    }); 
     var layer = new Kinetic.Layer(); 
     layer.add(text); 
     stage.add(layer); 
     stage.draw(); 
} 

window.onload = function(){ 
    var stage = new Kinetic.Stage({ 
     container: "designer", 
     width: 578, 
     height: 520 
    }); 
    var go = document.getElementById('go'); 
    go.addEventListener('mousedown', writeTextToCanvas(stage); 
}; 

不管怎么说,如果“stage”对象是在另一个函数中声明的 - “initStage()”,是否有可能在初始化阶段节点之后获取它以附加事物?我尝试通过DOM元素$('kineticjs-content')。children()[0]来访问它。

请协助。 kineticjs.com上的文档不是很详细。 谢谢!

+1

最后一行缺少括号 - 'go.addEventListener(“鼠标按下”,writeTextToCanvas( stage));' – Nucleon

+0

谢谢,非常感谢帮助,但是代码或多或少只是我想要做的一个例子,而不是我正在使用的代码。我更加好奇它是否可以在创建阶段后添加图层。 –

+1

你想追加什么舞台,为什么?上面的代码看起来很好(除了缺少的括号),所以不知道你在这里做什么。 – Ani

回答

0

你需要你的函数之外创建的图层,然后在你的函数只是文本添加到层...

function AddText() { 
    var text = new Kinetic.Text({ 
    ... 
    }); 
    layer.add(text); 
}