《 初学 》 html5 制作精灵表 坐标查看器

3 篇文章 0 订阅

//HTML代码

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>Sprite sheets</title>
    <link href="style/canvas.min.css" rel="stylesheet" />
</head>
<body>
    <div id="readout"></div>
    <canvas id="canvas" width="500" height="250">
        canvas not supported
    </canvas>
    <script src="javascript/canvas.min.js"></script>
</body>
</html>


//CSS样式

body {
    background:#dddddd;
}
#canvas {
    position:absolute;
    left:0px;
    top:40px;
    margin:0px;
    background:#ffffff;
    border:thin inset rgba(100,150,230,0.5);
    cursor:pointer;
}
#readout {
    margin-top:10px;
    margin-left:15px;
    color:blue;
}



//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 vertcal_line_spacing = 12,
        i = context.canvas.height;
    context.clearRect(0, 0, canvas.width, canvas.height);
    context.strokeStyle = 'lightgray';
    context.lineWidth = 0.5;
    while (i> vertcal_line_spacing*4) {
        context.beginPath();
        context.moveTo(0, i);
        context.lineTo(context.canvas.width, i);
        context.stroke();
        i -= vertcal_line_spacing;
    }
}


function drawSpritesheet() {
    context.drawImage(spritesheet,0,0);
}


function drawGuidelines(x, y) {
    context.strokeStyle = 'rgba(0,0,230,0,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();
}


//Event handlers.........................................
canvas.onmousemove = function (e) {
    var loc = windowToCanvas(canvas, e.clientX, e.clientY);
    drawBackground();
    drawSpritesheet();
    drawGuidelines(loc.x, loc.y);
    updateReadout(loc.x, loc.y);
}
//Initialization.........................................
spritesheet.src = 'sprite.jpg';
spritesheet.onload = function (e) {
    drawSpritesheet();
}
drawBackground();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值