var c4 = document.getElementById("myCanvas4"); var cxt4 = c4.getContext("2d"); cxt4.lineWidth = 3; var Points4 = new Array(); var startX4 = 250; var startY4 = 250; var distance3 = 500; var eyePosition4 = { x: 0, y: 0, z: 700 }; function init4() { Points4[0] = { x: 100, y: 100, z: 100 }; Points4[1] = { x: 100, y: 100, z: -100 }; Points4[2] = { x: -100, y: 100, z: -100 }; Points4[3] = { x: -100, y: 100, z: 100 }; Points4[4] = { x: 100, y: -100, z: 100 }; Points4[5] = { x: 100, y: -100, z: -100 }; Points4[6] = { x: -100, y: -100, z: -100 }; Points4[7] = { x: -100, y: -100, z: 100 }; } function changedistance4() { for (var i = 0; i < Points4.length; i++) { Points4[i].x = Points4[i].x * distance3 / Math.abs(eyePosition4.z - Points4[i].z); Points4[i].y = Points4[i].y * distance3 / Math.abs(eyePosition4.z - Points4[i].z); } } var currentAngle4 = 0; var drawCube4 = function() { cxt4.clearRect(0, 0, 1200, 1200); init4(); rotate4(degToRad(currentAngle4)) changedistance4(); cxt4.strokeStyle = randomColor(); cxt4.beginPath(); cxt4.moveTo(startX4 + Points4[0].x, startY4 - Points4[0].y); cxt4.lineTo(startX4 + Points4[1].x, startY4 - Points4[1].y); cxt4.lineTo(startX4 + Points4[2].x, startY4 - Points4[2].y); cxt4.lineTo(startX4 + Points4[3].x, startY4 - Points4[3].y); cxt4.lineTo(startX4 + Points4[0].x, startY4 - Points4[0].y); cxt4.moveTo(startX4 + Points4[4].x, startY4 - Points4[4].y); cxt4.lineTo(startX4 + Points4[5].x, startY4 - Points4[5].y); cxt4.lineTo(startX4 + Points4[6].x, startY4 - Points4[6].y); cxt4.lineTo(startX4 + Points4[7].x, startY4 - Points4[7].y); cxt4.lineTo(startX4 + Points4[4].x, startY4 - Points4[4].y); cxt4.moveTo(startX4 + Points4[1].x, startY4 - Points4[1].y); cxt4.lineTo(startX4 + Points4[5].x, startY4 - Points4[5].y); cxt4.moveTo(startX4 + Points4[0].x, startY4 - Points4[0].y); cxt4.lineTo(startX4 + Points4[4].x, startY4 - Points4[4].y); cxt4.moveTo(startX4 + Points4[2].x, startY4 - Points4[2].y); cxt4.lineTo(startX4 + Points4[6].x, startY4 - Points4[6].y); cxt4.moveTo(startX4 + Points4[3].x, startY4 - Points4[3].y); cxt4.lineTo(startX4 + Points4[7].x, startY4 - Points4[7].y); cxt4.stroke(); } drawCube4() var distanceTag = 0; var rotate4Async = eval(Jscex.compile("async", function() { //当摄像机到显示屏的距离大于750,退出循环 while (true) { if (distance3 < 200) distanceTag = 0; if (distance3 > 1000) distanceTag = 1; if (distanceTag == 1) distance3 -= 10; if (distanceTag == 0) distance3 += 10; currentAngle4 += 5; drawCube4(); $await(Jscex.Async.sleep(100)); } })); function degToRad(a) { return (a / (360 / (2 * Math.PI))); } //旋转 function rotate4(angle) { for (var i = 0; i < Points4.length; i++) { var tempX = Points4[i].x; var tempZ = Points4[i].z; Points4[i].x = Points4[i].x * Math.cos(angle) - Points4[i].z * Math.sin(angle); Points4[i].z = Points4[i].z * Math.cos(angle) + tempX * Math.sin(angle); } for (var i = 0; i < Points4.length; i++) { var tempY = Points4[i].y; Points4[i].y = Points4[i].z * Math.sin(angle) - Points4[i].y * Math.cos(angle); Points4[i].z = tempY * Math.sin(angle) + Points4[i].z * Math.cos(angle); } } function randomColor() { //16进制方式表示颜色0-F var arrHex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]; var strHex = "#"; var index; for (var i = 0; i < 6; i++) { //取得0-15之间的随机整数 index = Math.round(Math.random() * 15); strHex += arrHex[index]; } return strHex; } rotate4Async().start();
<script language="javascript" type="text/javascript" src="http://files.cnblogs.com/zhanglei644213943/uglifyjs-parser.js"></script> <script language="javascript" type="text/javascript" src="http://files.cnblogs.com/zhanglei644213943/jscex.js"></script> <script language="javascript" type="text/javascript" src="http://files.cnblogs.com/zhanglei644213943/jscex.builderBase.js"></script> <script language="javascript" type="text/javascript" src="http://files.cnblogs.com/zhanglei644213943/jscex.async.js"></script> <!--[if IE]> <script language="javascript" type="text/javascript" src="http://files.cnblogs.com/zhanglei644213943/json2.js"></script> <script language="javascript"> Jscex.config.codeGenerator = function (code) { return "false || " + code; } </script> <![endif]--><div style="border-bottom: #222 15px solid; border-left: #222 15px solid; background-color: #111; color: #ccc; border-top: #222 15px solid; border-right: #222 15px solid"><canvas id="myCanvas4" width="700" height="500">Your browser does not support the canvas element. </canvas></div>