日期:2014-05-18 浏览次数:20131 次
以下是HTML网页特效代码,点击运行按钮可查看效果: 以下是程序代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!-- saved from url=(0047)http://bbs.blueidea.com/thread-2830560-1-1.html --> <!-- 这是我在做的一个游戏的半成品,整理了一下发出来. 原理: 通过更新变换矩阵来记录转动(函数remx()). 利用矩阵计算出转动后的正方体顶点坐标, 把各个顶点的空间坐标按”近大远小”转换成平面坐标(函数p2d()), 用正方体各个面的法向量的z坐标判断该面是否可见,用高为1px的div层模拟画出四边形(函数gra2htm()). -------- 鼠标拖曳的代码用别人的代码修改的 --> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>Cube</title> <style> v\:*{behavior:url(#default#VML);} //声明变量v为VML对象 </style> <script type="text/javascript"> //vOnlyDrawLine为true时画线框图,false时画实体图 var vOnlyDrawLine = false; String.prototype.template=function(){ var args=arguments; return this.replace(/\{(\d+)\}/g, function(m, i){ return args[i]; }); } //var a="arg1:{0},arg2:{1},arg3:{2}"; //alert(a.template("a","b","c")); //arg1:a,arg2:b,arg3:c function ShowInfo(Value){ memo1.value = memo1.value + Value + "\n\r"; } function CheckOnClick(CheckBox){ vOnlyDrawLine=CheckBox.checked; //alert(vOnlyDrawLine); } /* 函数名: gra2htm 功能: 用高为1px的div层模拟画出四边形 */ function gra2htmold(clr,a,b,c,d){ var result=''; var maxx=Math.max(a[0],b[0],c[0],d[0]),minx=Math.min(a[0],b[0],c[0],d[0]); var maxy=Math.max(a[1],b[1],c[1],d[1]),miny=Math.min(a[1],b[1],c[1],d[1]); x=new Array(a[0],b[0],c[0],d[0],a[0],b[0],c[0],d[0],a[0],b[0]); y=new Array(a[1],b[1],c[1],d[1],a[1],b[1],c[1],d[1],a[1],b[1]); /*/begin for(var i=0;i<=3;i++){ result+='<div style="position:absolute; overflow:hidden; left:' +x[i]+'px; top:'+y[i]+'px; width:2px; height:2px; background-color:#FFF"></div>'; } //end*/ if(maxx-minx>=maxy-miny){ for(var i=3;i<=6;i++) if(y[i]==miny){ var k=l=i; break; } if(y[k]==y[k-1]) k--; xa=(x[k-1]-x[k])/(y[k-1]-y[k]); if(y[l]==y[l+1]) l++; xb=(x[l+1]-x[l])/(y[l+1]-y[l]); pl=x[k];pw=x[l]-x[k]; for(var i=miny+1;i<=maxy;i++){ if(i>y[k-1]){ k--; xa=(x[k-1]-x[k])/(y[k-1]-y[k]); } if(i>y[l+1]){ l++; xb=(x[l+1]-x[l])/(y[l+1]-y[l]); } result+='<div style="overflow:hidden; top:'+i +'px; left:'+Math.round(pl+=xa) +'px; width:'+Math.round(pw+=xb-xa) +'px; height:1px; position:absolute; background-color:'+clr +';"></div>'; } } else { for(var i=3;i<=6;i++) if(x[i]==minx){ var k=l=i; break; } if(x[k]==x[k+1]) k++; ya=(y[k+1]-y[k])/(x[k+1]-x[k]); if(x[l]==x[l-1]) l--; yb=(y[l-1]-y[l])/(x[l-1]-x[l]); pt=y[k];ph=y[l]-y[k]; for(var i=minx+1;i<=maxx;i++){ if(i>x[k+1]){ k++; ya=(y[k+1]-y[k])/(x[k+1]-x[k]); } if(i>x[l-1]){ l--; yb=(y[l-1]-y[l])/(x[l-1]-x[l]); } result+='<div style="overflow:hidden; left:'+i +'px; top:'+Math.round(pt+=ya) +'px; height:'+Math.round(ph+=yb-ya) +'px; width:1px; position:absolute; background-color:'+clr +';"></div>'; } } return result; } function gra2htm(clr,a,b,c,d){ var result=''; if (vOnlyDrawLine) { result+='<v:polyline strokecolor="black" filled="false" style="position:absolute;" points="' + a[0] + "