Показать сообщение отдельно
  #8 (permalink)  
Старый 24.10.2016, 12:02
Профессор
Отправить личное сообщение для clecar Посмотреть профиль Найти все сообщения от clecar
 
Регистрация: 11.02.2015
Сообщений: 254

Вот код который отказывается работать.
function zaliv() {
var canvas = document.getElementById("peRVI");
raskras = canvas.getContext('2d');
raskras. globalCompositeOperation="source-over";
raskras.beginPath();
raskras .globalAlpha = 1;
raskras.fillStyle = "#000"
raskras.lineWidth =5;
raskras.strokeRect(0, 0, 800, 800);
raskras.strokeStyle ="#000"
raskras.closePath();
var pr=parseInt(document.all("kras1").innerHTML)+1;
var pg=parseInt(document.all("kras2").innerHTML);
var pb=parseInt(document.all("kras3").innerHTML);
var x=parseInt(document.all("korX").innerHTML);
var y=parseInt(document.all("korY").innerHTML);



document.all("zax").innerHTML=x;
document.all("zay").innerHTML=y;
var xz=parseInt(document.all("zax").innerHTML)+3;
var yz=parseInt(document.all("zay").innerHTML);
var imgd = raskras.getImageData(0, 0, 800,800);
var pix = imgd.data;
var ja= yz+36;

var i=((ja*800)+xz)*4;// -- Адрес пикселя клика -->


var right=[];// -- массив направо -->
var left=[];// -- массив налево-->
var top=[];// -- вверх вертикально-->
var bottom=[];// -- вниз вертикально-->
var wole=[];// -- всё закрашенное-->
var o=0;
var ao=0;
for (n=i, m=2560000; n<m; n+=3200){o++; right[o]=(n+4); left[o]=n-4;
pix[n]=pr; pix[n+1]=pg; pix[n+2]=pb; pix[n+3]=255; if (pix[n+3203]==255){break}} // -- вертикальнaя синяя черта вниз -->
for (n=i-3200, m=0; n>m; n-=3200){o++; right[o]=(n+4); left[o]=n-4;
pix[n]=pr; pix[n+1]=pg; pix[n+2]=pb; pix[n+3]=255; if (pix[n-3200+3]==255){break}} // -- вертикальнaя зелёная черта вверх -->
// -- o=количеству последних закрашенных пикселей -->
var s=o;
for (pen=0, pon=1000; pen<pon; pen+=1){
var a=0;
for (n=o, m=0; n>m; n-=1){
for (k=right[n], ko=2560000; k<ko; k+=4){
pix[k]=pr; pix[k+1]=pg; pix[k+2]=pb; pix[k+3]=255; if (pix[k+7]==255){break} a++; wole[a]=k; }}
// -- налево розовый горизонтально -->
for (n=s, m=0; n>m; n-=1){
for (k= left[n], ko=0; k>ko; k-=4){
pix[k]=pr; pix[k+1]=pg; pix[k+2]=pb; pix[k+3]=255;if (pix[k-1]==255){break} a++; wole[a]=k; }}
// -- wole[a] всё что закрасилось -->
o=0;
var s=0;
for (n=a, m=0; n>m; n-=1){if (pix[wole[n]+3203]==0){o++; top[o]=wole[n]+3200;}
if (pix[wole[n]-3200+3]==0){s++; bottom[s]=wole[n]-3200;}
}
// -- вниз чёрным вертикально -->
var te=0;
for (n=o, m=0; n>m; n-=1){
for (k=top[n], ko=2560000; k<ko; k+=3200){ pix[k]=pr; pix[k+1]=pg; pix[k+2]=pb; pix[k+3]=255; if (pix[k+3203]==255){break}te++; wole[te]=k; }}
// -- вверх синим вертикально -->
for (n=s, m=0; n>m; n-=1){
for (k=bottom[n], ko=0; k>ko; k-=3200){pix[k]=pr; pix[k+1]=pg; pix[k+2]=pb; pix[k+3]=255; if (pix[k-3200+3]==255){break}te++; wole[te]=k; }}
var o=0;
var s=0;
for (n=te, m=0; n>m; n-=1){if (pix[wole[n]+7]==0){o++; right[o]=wole[n]+4;}
if (pix[wole[n]-1]==0){s++; left[s]=wole[n]-3200;}
}
if (te==0){break}
}

raskras.putImageData(imgd, 0, 0);

}
Ответить с цитированием