2011-05-12 99 views
3

在頭部實現HTML畫布元素中的所有鼠標和矢量相關信息後,我切換到了EaselJS。EaselJS改變顏色onMouseOver

我已經習慣了EaselJS,它非常整齊。我特別喜歡這些容器,以及它們如何簡單地繪製嵌入形狀。但是,我無法弄清楚,例如,如何在鼠標上實現shape的顏色更改。任何簡單的矩形都可以將顏色從紅色變爲綠色。

我是否應該從容器中移除形狀並用新顏色創建新形狀?

使事情複雜化,如果一個形狀部分遮擋另一個形狀,讓我們說一個圓形內的方形,然後onMouseOver不會註冊在圓形上方的圓形。有沒有辦法解決。

乾杯

編輯:這是我用來繪製我的圈子裏

var circle=new Shape(); 
    circle.graphics.beginStroke("rgba(255,0,0,0.75)") 
      .setStrokeStyle(lw) 
      .drawCircle(w/2,h/2,r) 
      .endStroke() 
      .beginFill("rgba(255,255,0,0.5)") 
      .drawCircle(w/2,h/2,r-lw/2) 
      .endFill(); 
    circle.shadow=new Shadow("rgba(0,0,0,0.5)",10,-10,10) 

有一種簡單的方式來傳遞一個新的色彩的beginFill載體的例子嗎?我可以在那裏使用變量嗎? circle.graphics...只能執行一次,還是每次調用stage.update()

回答

3

您想要將鼠標懸停上的Shape.graphics.beginFill更改爲不同的顏色。

Here's an example(警告:馬虎的代碼!)

+0

thanx的例子。在我的情況下,事情更復雜一點。有一個alpha值爲0.5的圓,因此,簡單地重繪是不夠的。此外,還有陰影。我只是假設EaselJS會有一個'color'屬性,所以可以很容易地更新它。不過,我認爲Shapes具有複雜的向量,並不那麼簡單。我想我必須 1)呼叫stage.clear() 2)重新定義所述形狀的整個向量被重新着色 3)與這個新的形狀替換舊形狀 4)呼叫stage.update() 是有更簡單的方法? (順便說一句,我會包括我的代碼片段) – puk 2011-05-12 14:07:00

+2

我找到了解決方案。基本上,我所要做的,重繪圖像是在每個鼠標上方/下方創建一個新的Graphics實例,如'circle.graphics = new Graphics()',並且每次都改變顏色。 – puk 2011-05-12 23:57:27