HTML5 Canvas在边缘处消失

时间:2013-12-15 22:06:58

标签: canvas

我正在使用来自http://www.script-tutorials.com/html5-fire-effect/这个整洁的小代码片段的“火”效果,但是因为我想在没有背景图像的情况下使用它,我试图弄清楚如何不使用它的硬边缘火焰周围的帆布。我一直在经历这个功能,但由于这是我第一次使用canvas,我不理解如何控制动画。如果你继续上面的教程链接,你会看到我在下面发布的摘录中的完整代码。我相信这是实际绘制火焰的部分。

function drawScene() { // main drawScene function
clear(); // clear canvas

var data_cnt = data_width * (data_height - 1);
for (var i = 0; i < data_width; i++) {
    out_data[data_cnt + i] = (0.7 > Math.random()) ? 255 : 20;
}

for (var y = 0; y < 100; y++){
    for (var x = 0; x < data_width; x++){
        var s = data_cnt + x;

        var temp_data = out_data[s] + out_data[s + 1] + out_data[s - 1] + out_data[s - data_width];
        temp_data >>= 2;
        if (temp_data > 1){
            temp_data -= 1;
        }
        temp_data <<= 0;

        out_data[s - data_width] = temp_data;

        var id = s << 2;
        img_data.data[id + 0] = colors[temp_data].r; // red
        img_data.data[id + 1] = colors[temp_data].g; // green
        img_data.data[id + 2] = colors[temp_data].b; // blue
        img_data.data[id + 3] = colors[temp_data].a; // alpha 
    }
    data_cnt -= data_width;
}

// draw result data
ctx.putImageData(img_data, 0, 0);

}

我不知道是否有人能帮助或至少指出我正确的方向。有没有办法

a)改变火焰的“锯齿状”效果(如黄色),因为它们不会切断于食堂的边缘

b)使整个动画在画布边缘周围变得柔和还是淡化?

我一直在网上搜索标准的HTML5画布火焰教程,但它们要么非常复杂,要么非常俗气。如果有人知道一个好的选择,请告诉我。

enter image description here

0 个答案:

没有答案