我已經使用stackoverflow.com作爲靈感和解決問題的來源,現在已經有好幾個月了。到目前爲止,我從未遇到過沒有解決方案的問題,這就是爲什麼我想先介紹一下自己的原因,並與所有感興趣的人分享我的問題。動畫剪輯區域<canvas>元素
在過去的幾個星期裏,我嘗試在畫布元素上爲某些形狀和線條製作動畫,以創建一些有趣的效果 - 例如手寫或類似效果。
爲了達到這個目的,我使用了一些利用canvas元素的.clip()命令的技術,來隱藏和逐漸揭示預渲染圖像(表單,行...)「等待」的區域。 我在這裏遇到的問題與確定畫布元素中裁剪區域的變量有關。它似乎有一些奇怪的問題,增加(但不是減少)動畫中的值。
因爲所有這些聽起來很奇怪,我知道這裏是我正在談論的代碼的相關部分。
$(document).ready(function() {
var ctx = $("#canvas")[0].getContext("2d");
ctx.fillStyle = "#a00";
var recW = 200;
function animate() {
ctx.clearRect(0,0,400,400);
ctx.beginPath();
ctx.rect(50,50,recW,100);
ctx.clip();
ctx.beginPath();
ctx.arc(250,100,90,0,Math.PI*2,true);
ctx.fill();
recW--;
if (recW == 150) clearInterval(run);
}
var run = setInterval(function() { animate(); },60);
});
上面的代碼工作得很好。它在400 * 400的畫布中繪製一個矩形,將其用作裁剪區域,之後繪製圓形,然後相應裁剪該圓形。通過動畫間隔,裁剪矩形的長度然後減少到150的測試值。到目前爲止,那麼好。但在這裏談到這已經讓我困擾的幾個小時就結束部分:
$(document).ready(function() {
var ctx = $("#canvas")[0].getContext("2d");
ctx.fillStyle = "#a00";
var recW = 150;
function animate() {
ctx.clearRect(0,0,400,400);
ctx.beginPath();
ctx.rect(50,50,recW,100);
ctx.clip();
ctx.beginPath();
ctx.arc(250,100,90,0,Math.PI*2,true);
ctx.fill();
recW++;
if (recW == 200) clearInterval(run);
}
var run = setInterval(function() { animate(); },60);
});
如果我把整個動漫周邊,開始與150的剪裁矩形的寬度,並與RECW增加它++到測試200的值,突然動畫不再起作用。變量的逐漸增加沒有問題,但可見剪輯區域不增長。
我懷疑,我可能只是俯瞰這裏的明顯,但我似乎根本無法找到錯誤,我會很感激,如果有人可以點我到正確的方向;)
謝謝很多
Tricon
一個偉大的地方開始將在網上發佈你的全部代碼。轉到[jsfiddle](http://jsfiddle.net/)並放置代碼,以便我們可以更好地運行它並與其一起玩 – puk 2012-01-03 07:09:44
毫無疑問,一旦將它放在那裏,請給我們一個指向您的代碼段的鏈接的代碼=) – puk 2012-01-03 07:10:08
請參閱下面的解決方案。此外,在回覆評論時,請使用&符號「@」,然後輸入用戶名。在這種情況下,你的迴應的第一行應該是'@ puk'。這是一個例外,當你回答提出問題/答案的實際人員時,那麼你不需要這樣做 – puk 2012-01-03 08:20:10