1. e-works数字化企业网
  2. 书屋
  3. 书籍列表
  4. HTML5 Canvas核心技术—图形、动画与游戏开发
  5. 事件处理

第一章 基础知识

第六节 事件处理


    程序清单1-5 精灵表坐标查看器的HTML代码

    <!DOCTYPE html>

   <head>

     <title>Sprite sheets</title>

     <style>

        body {

           background: #dddddd;

        }

        #canvas {

           position: absolute;

           left: 0px;

           top: 20px;

           margin: 20px;

           background: #ffffff;

           border: thin inset rgba(100,150,230,0.5);

           cursor: pointer;

        }

        #readout {

           margin-top: 10px;

           margin-left: 15px;

           color: blue;

        }

     </style>

  </head>

  <body>

    <div id='readout'></div>

    <canvas id='canvas' width='500' height='250'>

      Canvas not supported

    </canvas>

    <script src='example.js'></script>

  </body>

</html>

程序清单1-6 精灵表坐标查看器的JavaScript代码

var canvas = document.getElementById('canvas'),

    readout = document.getElementById('readout'),

    context = canvas.getContext('2d'),

    spritesheet = new Image();

//Functions..........................................................

function windowToCanvas(canvas, x, y) {

   var bbox = canvas.getBoundingClientRect();

   return { x: x - bbox.left * (canvas.width  /bbox.width),

            y: y - bbox.top * (canvas.height /bbox.height)

          };

}

function drawBackground() {

   var VERTICAL_LINE_SPACING = 12,

       i = context.canvas.height;

   context.clearRect(0,0,canvas.width,canvas.height);

   context.strokeStyle = 'lightgray';

   context.lineWidth = 0.5;

   while(i > VERTICAL_LINE_SPACING*4) {

      context.beginPath();

      context.moveTo(0, i);

      context.lineTo(context.canvas.width, i);

      context.stroke();

      i -= VERTICAL_LINE_SPACING;

   }

}

function drawSpritesheet() {

   context.drawImage(spritesheet, 0, 0);

}

function drawGuidelines(x, y) {

   context.strokeStyle = 'rgba(0,0,230,0.8)';

   context.lineWidth = 0.5;

   drawVerticalLine(x);

   drawHorizontalLine(y);

}

function updateReadout(x, y) {

   readout.innerText = '(' + x.toFixed(0) + ', '+ y.toFixed(0) + ')';

}

function drawHorizontalLine (y) {

   context.beginPath();

   context.moveTo(0,y + 0.5);

   context.lineTo(context.canvas.width, y + 0.5);

   context.stroke();

}

function drawVerticalLine (x) {

   context.beginPath();

   context.moveTo(x + 0.5, 0);

   context.lineTo(x + 0.5,context.canvas.height);

   context.stroke();

系列微信

数字化企业网
PLM之神
e-works制信科技
MES百科
工业自动化洞察
智能制造IM
AI智造圈
智能工厂前线
工业机器人洞察
智造人才圈
工业软件应用
智能制造网博会
ERP之家
供应链指南针
© 2002-2025  武汉制信科技有限公司  版权所有  ICP经营许可证:鄂B2-20030029-1(于2003年首获许可证:鄂B2-20030029)
鄂公网安备:420100003343号 法律声明及隐私权政策     投诉举报电话:027-87592219

关于我们    |    联系我们    |    隐私条款

ICP经营许可证:鄂B2-20080078
(于2003年首获许可证:鄂B2-20030029)
鄂公网安备:420100003343号
© 2002-2025  武汉制信科技有限公司  版权所有
投诉举报电话:027-87592219

扫码查看