用 Canvas=DDraw.DrawSurface; 方法来动态写字,为什么每次都要把以前写过的字重新写一遍呢?
具体代码:<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<script language="VBScript">
</script>
<script language="JavaScript">
var interval=null;
var loopFlag=0;
var loopIndex=0;
var arr=new Array(); //从文件中把坐标读到程序的数组里,文件里每一行有两个坐标x,y
function IPoint(){
this.x=0;
this.y=0;
}
var i_x=0;i_y=0;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile("C:/file/data1.txt",1);
var iIndex = 0;
while(!f.AtEndOfStream) {
var s=f.ReadLine();
var arrLL=s.split(/,/);
var p=new IPoint();
i_x=arrLL[0];
i_y=arrLL[1];
p.x=i_x;
p.y=i_y;
arr[iIndex]=p;
iIndex++;
}
f.close(); //坐标以点的形式 画在DDraw里
function lBegin(){
//以前用setTimeout
interval=window.setInterval('drawLine',50);
} function drawLine(){
creatLine(loopFlag);
loopFlag++;
if(loopFlag > arr.length-2){
window.clearInterval(interval);
}
}//坐标以点的形式 画在DDraw里
function creatLine(loopIndex){
var x0=arr[loopIndex].x;
var y0=arr[loopIndex].y;
var x1=arr[loopIndex + 1].x;
var y1=arr[loopIndex + 1].y;
var Canvas=DDraw.DrawSurface;
Canvas.Line(x0,y0,x1,y1);
DDraw.DrawSurface = Canvas; //每次都把以前画过得再生成一次,按道理应该只画本次循环生成的线
}
</script>
</body>
<input type="button" name = "Begin" value = "Begin" onClick = "lBegin()"> <object id=DDraw classid="clsid:369303C2-D7AC-11d0-89D5-00A0C90833E6" style="background:#FFFFFF;position:absolute;left:px;top:40px;width:500px;height:500px;>
</object>
</html>
具体代码:<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<script language="VBScript">
</script>
<script language="JavaScript">
var interval=null;
var loopFlag=0;
var loopIndex=0;
var arr=new Array(); //从文件中把坐标读到程序的数组里,文件里每一行有两个坐标x,y
function IPoint(){
this.x=0;
this.y=0;
}
var i_x=0;i_y=0;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile("C:/file/data1.txt",1);
var iIndex = 0;
while(!f.AtEndOfStream) {
var s=f.ReadLine();
var arrLL=s.split(/,/);
var p=new IPoint();
i_x=arrLL[0];
i_y=arrLL[1];
p.x=i_x;
p.y=i_y;
arr[iIndex]=p;
iIndex++;
}
f.close(); //坐标以点的形式 画在DDraw里
function lBegin(){
//以前用setTimeout
interval=window.setInterval('drawLine',50);
} function drawLine(){
creatLine(loopFlag);
loopFlag++;
if(loopFlag > arr.length-2){
window.clearInterval(interval);
}
}//坐标以点的形式 画在DDraw里
function creatLine(loopIndex){
var x0=arr[loopIndex].x;
var y0=arr[loopIndex].y;
var x1=arr[loopIndex + 1].x;
var y1=arr[loopIndex + 1].y;
var Canvas=DDraw.DrawSurface;
Canvas.Line(x0,y0,x1,y1);
DDraw.DrawSurface = Canvas; //每次都把以前画过得再生成一次,按道理应该只画本次循环生成的线
}
</script>
</body>
<input type="button" name = "Begin" value = "Begin" onClick = "lBegin()"> <object id=DDraw classid="clsid:369303C2-D7AC-11d0-89D5-00A0C90833E6" style="background:#FFFFFF;position:absolute;left:px;top:40px;width:500px;height:500px;>
</object>
</html>
<object id=DDraw classid="clsid:369303C2-D7AC-11d0-89D5-00A0C90833E6" style="background:#FFFFFF;position:absolute;left:px;top:40px;width:500px;height:500px;>
</object>
这段没有解析出来呀.
<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<script language="VBScript">
</script>
<script language="JavaScript">
var interval=null;
var delay = 50;
var loopFlag=0;
var loopIndex=0;
var arr=new Array(); //从文件中把坐标读到程序的数组里,文件里每一行有两个坐标x,y
function IPoint(){
this.x=0;
this.y=0;
}
var i_x=0;i_y=0;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile("C:/file/data1.txt",1);
var iIndex = 0;
while(!f.AtEndOfStream) {
var s=f.ReadLine();
var arrLL=s.split(/,/);
var p=new IPoint();
i_x=arrLL[0];
i_y=arrLL[1];
p.x=i_x;
p.y=i_y;
arr[iIndex]=p;
iIndex++;
}
f.close(); //坐标以点的形式 画在DDraw里
function lBegin(){
//以前用setTimeout
drawLine.call(this);
} function drawLine(){
creatLine(loopFlag);
loopFlag++;
if(!(loopFlag > arr.length-2)){
interval=window.setTimeout('drawLine',delay);
delay+=50
}
}//坐标以点的形式 画在DDraw里
function creatLine(loopIndex){
var x0=arr[loopIndex].x;
var y0=arr[loopIndex].y;
var x1=arr[loopIndex + 1].x;
var y1=arr[loopIndex + 1].y;
var Canvas=DDraw.DrawSurface;
Canvas.Line(x0,y0,x1,y1);
DDraw.DrawSurface = Canvas; //每次都把以前画过得再生成一次,按道理应该只画本次循环生成的线
delay-=50
window.clearTimeout(interval);
}
</script>
</body>
<input type="button" name = "Begin" value = "Begin" onClick = "lBegin()"> <object id=DDraw classid="clsid:369303C2-D7AC-11d0-89D5-00A0C90833E6" style="background:#FFFFFF;position:absolute;left:px;top:40px;width:500px;height:500px;">
</object>
</html>
Canvas.Line(x0,y0,x1,y1);
DDraw.DrawSurface = Canvas; 这段这里感觉总别扭
意思应该是保存画布,再画线,再把原来的画布画上去,这样肯定慢了可否直接画到画布上,不用重绘。
这段代码我也不太会,从网上找的,var Canvas=DDraw.DrawSurface这句话我感觉就是把canvas帮定到DDraw.DrawSurface上了,Canvas.Line(x0,y0,x1,y1);这句话指定了坐标,DDraw.DrawSurface = Canvas这句话就是把线画了出来。
假设我前100次不掉用DDraw.DrawSurface = Canvas这个语句,只调前两句,第101次的时候我再调用这三句,按道理应该把101个坐标的点画上来,可是它把前100次的坐标全都画出来了。真是不知道为什么
</object>
这是什么
光靠猜恐怕很能猜测