0
다음 코드는 오류없이 실패하고 단순히 모든 픽셀을 초록색으로 유지하지 않습니다. 그 결과 잡음 효과는 아주 멋지지만, 나는 그것들을 녹색으로 원한다. 행을 복사하지만 RGBA 읽기 프레임에 정렬하지 않기 때문에 오류라고 생각합니다. 바이올린은 여기에 있습니다 : http://jsfiddle.net/mDk2W/2/JS/canvas putImageData가 실패합니다.
var s = document.getElementById('s');
s.width = 640;
s.height = 480;
var x = s.getContext('2d');
var idata;
var ppx;
function arrayCopy(src, sstart, dst, dstart, length) {
for (var i = sstart; i < sstart + length; i += 1) {
dst[dstart++] = src[i];
}
}
function loadPixels() {
idata = x.getImageData(0, 0, s.width, s.height);
ppx = idata.data;
}
function updatePixels() {
idata.data = ppx;
x.putImageData(idata, 0, 0);
}
function setup_static() {
loadPixels();
for (var y = 0; y < ppx.length - 4; y += 4) {
var spread = Math.round(Math.random() * 4);
switch (spread) {
case (1):
if (y - 1920 > 0) {
ppx[y + 1] = ppx[y - 1919];
}
break;
case (2):
if (y - 4 > 0) {
ppx[y + 1] = ppx[y - 3];
}
break;
case (3):
ppx[y + 1] = parseInt(Math.round(Math.random()) * 255);
if (y + 1921 < ppx.length) {
ppx[y + 1920] = ppx[y + 1];
}
break;
case (4):
ppx[y + 1] = parseInt(Math.round(Math.random()) * 255);
if (y + 5 < ppx.length) {
ppx[y + 5] = ppx[y + 1];
}
break;
case (0):
break;
};
}
}
setup_static();
var height = s.height;
var heightover2 = height/2.0;
var widthby4 = s.width * 4;
function draw() {
for (y = 0; y < height; y += 1) {
arrayCopy(ppx, parseInt(Math.round(Math.random() * (heightover2))), ppx, y * widthby4, widthby4);
}
updatePixels();
requestAnimationFrame(draw);
}
draw();
나는 "ReferenceError : re questAnimationFrame이 정의되지 않았습니다 "_ Firebug의 conole에서 ... – CBroe
Oh? Chrome을 사용해야합니다. ;) –
정확히 무엇을하려고합니까? 화면을 가로 지르는 정적 띠를 흰색으로 채우십시오. – Loktar