2010-11-08 21 views
10

所以我剛開始使用HTML5和Canvas元素。我正在創建一個項目,在那裏我將創建思維導圖,並計劃使用Canvas元素和Java腳本一起完成此任務。在HTML5 Canvas中分組形狀和文本

我的問題是,如何在畫布中組合形狀?我沒有在畫布上繪製形狀和文本的問題,也沒有任何問題在畫布上拖動它們。我想要做的是鎖定說一個形狀和文本元素在一起,這樣如果我拖動形狀,文字就隨之而來。

任何想法?

在此先感謝。

+0

你是否至少試過編碼?如果是,請發佈代碼,因爲你的問題對我來說有點混亂。無論如何,我會upvote你的問題得到一個很好的答案:) – 2010-11-08 21:05:25

+0

好吧,是啊,繼承人我正在工作的網頁:http://www.adam-holmes.co.uk/mindmaps/test2/temp.php 如果你看看「scripts.js」,你應該能夠理解我所做的事情。 P.S.感謝您的讚揚:) – 2010-11-08 21:10:24

+0

謝謝:)我從任何地方拿點東西,並自己添加一些點。像兩天... – 2010-11-08 21:21:51

回答

3

您可能想要使用SVG而不是畫布。

  • SVG是一個可以添加,修改等路徑,組等等的板,因爲它們仍然是獨立的實體。然後,您可以在對象(路徑,組或其他)上擁有諸如onclick處理程序之類的東西,這使事件處理通常比畫布更簡單。使用SVG製作可重複的內容也更容易。在Inkscape中繪製一些東西,然後你可以複製它生成的SVG並用它做任何事情。

  • 畫布只是一個畫在畫布上;每個新框架都是在前一個框架上手動繪製的 - 因此,您必須調用canvas的2D上下文中的函數來構造每個框架,而不是使用<ellipse>。沒有該橢圓的事件處理程序 - 您需要計算鼠標是否在手動橢圓上:只有一個元素;畫布上畫筆的筆觸不會分開。對於那些會使它更加困難的思維導圖。

SVG也使出口容易和可擴展,這可能是您的目的所需。畫布只會給你一個位圖。

+0

我想我將不得不稍微改變一下設計。關我去看看一些教程。謝謝。 – 2010-11-08 21:51:02

0

無論您使用什麼機制拖動形狀,都應該爲您做出魔術,如果您可以將這兩種形狀暫時合併爲一個。不知道你是如何表達形狀和你用來移動它們的方法,我無法給你更好的建議。

1

我有點遲到了,但FWIW有一個非常好的圖書館,它可以讓你做層,形狀,團體,甚至事件綁定HTML5的所謂Kinetic.js

http://www.html5canvastutorials.com/kineticjs/

canvas元素我使用它在html5畫布上創建了一組可拖動的形狀和文本,並取得了巨大成功。