我知道如果我可以创建一个文本文件并将其渲染为像素。第一次测试成功。我有一个像素。现在,当我放置更多像素时,它将无法工作。这是代码:
xhr=new XMLHttpRequest();
xhr.open("GET", "graphtest.prg", false);
xhr.send();
document.write(xhr.responseText);
var file=xhr.responseText;
var c=0;
var bad=false;
var val=0;
var rgbs="rgb(";
while(c<file.length && bad==false) {
//alert(file.charAt(c));
cc=file.charAt(c);
if (cc=="P" || cc=="R" || cc=="G") {
// magic
}
else {
if (cc=="{") {
if (val!=5) {
var newelem=document.createElement("span");
newelem.innerHTML=" ";
/*newelem.style.width="1px";
newelem.style.height="1px";
newelem.position="absolute";*/
newelem.className="graf";
}
}
else if (cc=="'") {
c++;
cc=file.charAt(c);
switch (val) {
case 0:
//alert("RUN");
var num=""+cc.toString();
c++;
while(!isNaN(file.charAt(c))) {
num+=file.charAt(c).toString();
c++;
}
newelem.style.left=num+"px";
//alert(num);
val++;
c++;
continue;
break;
case 1:
var num=""+cc.toString();
c++;
while(!isNaN(file.charAt(c))) {
num+=file.charAt(c).toString();
c++;
}
newelem.style.top=num+"px";
//alert(num);
val++;
c++;
continue;
break;
case 2:
var num=""+cc.toString();
c++;
while(!isNaN(file.charAt(c))) {
num+=file.charAt(c).toString();
c++;
}
rgbs+=num+",";
//alert(num);
val++;
c++;
continue;
break;
case 3:
var num=""+cc.toString();
c++;
while(!isNaN(file.charAt(c))) {
num+=file.charAt(c).toString();
c++;
}
rgbs+=num+",";
//alert(num);
val++;
c++;
continue;
break;
case 4:
var num=""+cc.toString();
c++;
while(!isNaN(file.charAt(c))) {
num+=file.charAt(c).toString();
c++;
}
rgbs+=num+")";
//alert(num);
val++;
c++;
continue;
break;
case 5:
newelem.style.backgroundColor=rgbs;
document.body.appendChild(newelem);
val=0;
rgbs="";
newelem=null;
cc="";
num="";
break;
}
}
if (val==5) {
newelem.style.backgroundColor=rgbs;
document.body.appendChild(newelem);
val=0;
rgbs="";
//newelem=null;
//c;
alert(file.charAt(c));
cc="";
num="";
}
}
c++;
}
这是“图形文字”文件:
PRG{'100','200','0','255','0'}{'200','100','0','0','255'}
第一个像素成功渲染,但第二个像素没有背景颜色。这是解析问题还是别的什么?
答案 0 :(得分:2)
现在解析器因为重复代码的大量而令人困惑。在每个交换机的情况下,你都会重复很多相同的代码,这是不必要的。
除此之外,我注意到的一件事是您的rgbs
var在脚本开头用var rgbs="rgb(";
初始化,但随后在rgbs="";
结束时重新初始化像素解析。