2011-06-10 50 views
3

據我瞭解,HTML5的畫布在繪製後不允許訪問元素,因爲他們立即變爲圖形模式。淡出繪圖後HTML 5畫布的一部分

我剛剛遇到了HTML5 Audio API的偉大演示http://www.storiesinflight.com/jsfft/visualizer/index.html,我在想如何在繪製後圓圈縮小和淡出。 (要查看,只需單擊暫停並觀察每個弧元素就會消失爲無)。這是如何完成的? JS的片段會很棒。

非常感謝。

注意:我相信Firefox 4是目前運行的唯一瀏覽器。

回答

2

有兩個問題你可以問,所以我會盡量回答這兩個問題。

簡短的回答是「他們跟蹤所有事物並重新繪製淡入淡出」。如果您只是想知道如何開始跟蹤某個狀態,也可以使Canvas像保留模式一樣進行操作,請參閱these tutorials

在具體的例子中,你給他們甚至不需要跟蹤的東西,如果他們不想要的,因爲圓的大小和位置是基於當前的音頻輸入在當前第二,他們只需擦拭整個畫布並接受輸入,並將其轉換爲每X毫秒的適當大小和位置的圓。

所以圓圈不會消失。他們正在被完全消滅,而小圈子正在被吸引。它給出淡出的效果,但可能沒有跟蹤任何狀態。

+0

是什麼讓我問這個問題是什麼,當你暫停音軌和圓圈淡出 - 音頻暫停後。這不會反對重繪每一次?謝謝!很好的答案! – 2011-06-10 04:03:14

+0

我沒有意識到它做到了,所以他們保存參考。如果是這樣的話,他們會跟蹤每個圓圈的大小和位置,一旦按下暫停按鈕,計時器就會啓動,並且每一個圓圈都被繪製得更小一點,直到它們只有幾個像素寬,然後它們的顏色變爲灰色,他們被繪製,直到你不能再看到他們。 – 2011-06-10 12:02:43

1

該代碼可以存儲circle對象,其屬性如radius,xy

然後,它可以對這些屬性進行動畫處理,並使用類似於遊戲循環的間隔在canvas上繪製它們。

不會訪問DOM元素。