如何在画布内显示可拖动的文本元素?

问题描述:

我要的是显示在网页上(如spanp元素),当我双击它们,我可以把它变成一个input元素并更改其文本的文本元素。如何在画布内显示可拖动的文本元素?

每个元素都必须是可拖拽,所以当我双击一个元素时,我必须在文本元素的相同位置创建input元素。

什么是做到这一点的最好方法是什么? Inside canvas?从我读过的内容来看,不可能在画布中放置HTML元素。

PS:我知道了HTML5 draggable财产,并已用它来测试。与JQueryUI相同,所以问题不在于DnD,而只是记录可拖动元素位置的最佳方法。

要糖衣片文本元素到画布上,它使用一个框架(如cgSceneGraph)一个好主意。

不能使用HTML元素的canvas元素里面,但是你可以通过创建一个文本输入字段模拟这样的行为时,对文字的用户点击,并在同一个地方的文本添加文本输入。

cgSceneGraph中,我使用相同的技巧来显示和操作画布“内部”的web视图(但是使用iFrame而不是文本输入)。

下面是代码开始:

this._textInput = document.createElement("INPUT"); 
this._textInput .style.position = "absolute"; 
document.body.appendChild(this._textInput); 

this._textInput.style.left = this.getAbsoluteLeft() + "px"; 
this._textInput.style.top = this.getAbsoluteTop(+ "px"; 
this._textInput.style.width = this.getAbsoluteWidth() + "px"; 
this._textInput.style.height = this.getAbsoluteHeight() + "px"; 
+0

这似乎是一个很好的框架也从我读过! (从您的链接到其网站)。我会尽量选择最适合我需求的,谢谢。 – thibaultcha 2013-03-09 21:05:45

+0

我目前正在尝试cgSceneGraph,很好。我有两个问题:当节点被拖动时,我可以删除粉红色边框吗?我该如何绑定textNode上的'dblclick'事件?通过扩展类? – thibaultcha 2013-03-10 13:39:52

+0

是的,你可以修改所选边框的行为与CGSGNode的那些4个属性:'selectionHandleColor','selectionHandleSize','selectionLineColor'和'selectionLineWidth'。 v2还将包含一个委托渲染方法来绘制任何你想要的而不是方块。每个节点都从CGSGNode进入,并从中获取所有事件和属性。所述双击事件(也作为双次触摸,这是不被移动浏览器本身管理的)被称为任何其他事件:myTextNode.onDblClick =函数(事件){ //event.node.xxx; };' – 2013-03-10 14:31:18