`
128kj
  • 浏览: 600086 次
  • 来自: ...
社区版块
存档分类
最新评论

HTML5 Canvas学习笔记(2)菜单高亮显示与像素字体

阅读更多
看到哪,学到哪,记到哪。见谅,这些笔记就没有顺序和知识上的连贯性了。希望各位老师指出我学习中的错误!!
效果图:


点击看效果:
http://www.108js.com/article/canvas/2/menu.html

欢迎访问博主网站:http://www.108js.com

代码:
<!doctype html>
<html>
<head>
<title>菜单高亮显示</title>
<style>
@font-face {
font-family: 'PixelFont';
src: url('font/pixelfont.eot') format('embedded-opentype'),
url('font/pixelfont.woff') format('woff'),
url('font/pixelfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
h1{
font: 22pt 'PixelFont';
}
</style>

</head>
<body style="background-color:#eee;" >
       <h1>Menu</h1>
<div id="GameDiv" style="margin:0 auto;"  >
<canvas id="GameCanvas" >
Your browser does not support the HTML5 canvas element.
</canvas>
</div>
      <div id="hidden" style="visibility:hidden; width:1px; height:1px; overflow:hidden">
        <img  id="backgroundMenu" src="img/backgroundmenu.png" onload="MainMenu(this);">
        <img id="sprLogo" src="img/logo.png" onload="MainMenu(this);">
        <img  id="sprSplashLogo" src="img/splashLogo.png" onload="MainMenu(this);">
         <img  id="sprHTML" src="img/htmlit.png" onload="MainMenu(this);">


      </div>
</body>
</html>
<script>
var div = document.getElementById("GameDiv");
div.style.width = "768px";
div.style.height = "512px";
var canvas = document.getElementById("GameCanvas");
canvas.setAttribute("width","768");
canvas.setAttribute("height","512");

var ctx = canvas.getContext("2d");
var patternMenu =null;

var cx = canvas.width/2;
var cy = canvas.height/2;
var mouseX=10;
var mouseY=10;
var itemsLoaded=0;//当前加载完的图片数 

  function MainMenu(item){
    itemsLoaded++;//当前加载完的图片数 
    if(itemsLoaded==4) {
          ctx.save(); 
          patternMenu=ctx.createPattern(backgroundMenu,"repeat");
          ctx.fillStyle = patternMenu;
          ctx.fillRect(0,0,canvas.width, canvas.height);
          ctx.restore();
          ctx.drawImage(sprLogo, canvas.width/2 - sprLogo.width/2 , 80);
          ctx.drawImage(sprSplashLogo, 70 , 180);
          ctx.textAlign = "start";
          ctx.font = "12pt 'Segoe UI Light',Verdana";
          ctx.fillStyle = "#eee";
          ctx.fillText("HTML.it | Guida Videogame HTML5 di Adriano Tumminelli", 60,canvas.height-20);
          ctx.drawImage(sprHTML, 5, canvas.height-55);
          ctx.shadowOffsetX = 0;
          ctx.shadowBlur = 0;
          drawText();
      }
  }

   function MouseInsideText(str, x, y, col1, col2){
       ctx.shadowColor = "#000";
ctx.shadowOffsetX = 1;
ctx.font = "32pt 'PixelFont'" 
ctx.textAlign = "center";
ctx.shadowBlur = 3;
      
var w = ctx.measureText(str).width;//字符串的宽
var h = 30;
     var inside = (mouseX > x - w/2  && mouseY > y - h && mouseX < x + w/2  && mouseY < y+4 );
if(inside)//鼠标在文本上时
ctx.fillStyle = col2;
else
  ctx.fillStyle = col1;
        //ctx.textBaseline = 'middle';
        //ctx.textAlign = 'center';
  ctx.fillText(str, x, y);
return inside;
    }

    function drawText(){
       MouseInsideText("New Game",cx, cy+10,"#eee", "#ea4");
       MouseInsideText("Other games",cx, cy+80,"#eee", "#ea4");
       setTimeout(drawText,100);
    }
 
   //鼠标移动
     canvas.onmousemove=function(e) {
       var e = window.event || e
       var rect = this.getBoundingClientRect();
        mouseX =e.clientX - rect.left;//获取鼠标在canvsa中的坐标
        mouseY =e.clientY - rect.top;
       
     }

</script>

源码下载:

  • 大小: 73.1 KB
0
0
分享到:
评论

相关推荐

    html5,canvas扇形菜单

    通过分析和学习这些代码,开发者可以深入理解如何使用HTML5和Canvas创建自定义的交互式菜单,同时也能掌握更多关于图形绘制和事件处理的知识。 总的来说,HTML5和Canvas结合使用,为开发者提供了一个强大且灵活的...

    HTML5 Canvas学习笔记(5)游戏得分动画

    这篇“HTML5 Canvas学习笔记(5)游戏得分动画”着重讲解了如何利用Canvas技术来实现游戏中的得分动画效果。通过学习这篇笔记,我们可以深入了解Canvas的基本用法以及如何将它应用于游戏开发。 首先,Canvas是HTML5的...

    HTML5 Canvas学习笔记(1)处理鼠标事件

    这篇“HTML5 Canvas学习笔记(1)处理鼠标事件”着重讲解了如何利用Canvas API来监听和响应鼠标的点击、移动等事件。 Canvas API提供了几个关键的方法来处理鼠标事件,包括`addEventListener`用于绑定事件处理函数,`...

    HTML5 Canvas学习笔记(7)俄罗斯方块游戏之一(色块)

    这篇“HTML5 Canvas学习笔记(7)俄罗斯方块游戏之一(色块)”着重介绍了如何利用Canvas构建经典游戏——俄罗斯方块的基础部分,即色块的绘制与移动。 首先,我们要理解HTML5 Canvas的基本结构。它是一个二维绘图...

    高亮img、pdf重点部分(html2canvas、pdfjs-dist、react-pdf)demo

    总的来说,这个项目展示了如何利用现代Web技术,如React、HTML2Canvas和PDF.js,来增强用户与图像和PDF文档的交互,特别是高亮显示特定区域的功能。这样的功能在教育、研究、注解和协作等场景中具有广泛的用途。

    HTML5 Canvas学习笔记(3)加载游戏/动画音乐

    在“HTML5 Canvas学习笔记(3)加载游戏/动画音乐”这个主题中,我们将深入探讨如何利用Canvas API来加载和播放音频资源,这对于创建交互式游戏和动画至关重要。 1. HTML5 Audio API HTML5提供了Audio元素,它是网页...

    HTML5 Canvas学习笔记(4)游戏界面的淡入淡出

    在本篇"HTML5 Canvas学习笔记(4)游戏界面的淡入淡出"中,我们将深入探讨如何利用Canvas来创建游戏界面的淡入淡出效果,这是一个增强用户体验的重要技巧,尤其在游戏加载、场景切换或过渡效果中。 首先,淡入淡出...

    HTML5 Canvas学习笔记(9)俄罗斯方块游戏之三(游戏面板)

    这篇“HTML5 Canvas学习笔记(9)俄罗斯方块游戏之三(游戏面板)”深入探讨了如何利用Canvas技术构建一个经典的游戏——俄罗斯方块。 在HTML5 Canvas上构建俄罗斯方块游戏,首先需要理解Canvas的基本结构和绘图API。...

    html2canvas(1.0.0)

    《html2canvas:网页元素截图神器》 html2canvas是一个非常强大的JavaScript库,它允许你在浏览器环境中将HTML渲染为Canvas图像,进而可以将其保存为图片或者进行其他图像处理。这个库在1.0.0版本中经过了优化和...

    HTML5 Canvas核心技术源码技术代码

    HTML5 Canvas核心技术源码技术代码、图形、动画与游戏开发。 Canvas开发、入门学习Canvas技术代码。 HTML5 Canvas核心技术源码技术代码、图形、动画与游戏开发。 Canvas开发、入门学习Canvas技术代码。 HTML5 Canvas...

    Android—BitMap与Canvas学习笔记

    Android—BitMap与Canvas学习笔记

    HTML5 Canvas学习笔记(6)拼图游戏(数字版)

    在“HTML5 Canvas学习笔记(6)拼图游戏(数字版)”这篇博文中,作者分享了如何利用Canvas构建一个数字拼图游戏。下面我们将详细探讨这个知识点。 1. **HTML5 Canvas基础**: - Canvas是一个基于矢量图形的画布元素...

    《HTML5 Canvas学习笔记(10)》数钱数到手抽筋

    这篇名为“HTML5 Canvas学习笔记(10) - 数钱数到手抽筋”的博客文章,很可能是讲解如何使用Canvas来模拟数钱动画或游戏的教程。在Canvas中实现这样的功能,需要掌握以下几个关键知识点: 1. **Canvas基本概念**:...

    html5canvas播放视频

    HTML5 Canvas 是一个强大的网页图形绘制工具,允许开发者在网页上动态绘制图像,而无需依赖任何插件。在这个场景中,我们关注的是如何利用Canvas来播放视频。这涉及到HTML5的Media API和Canvas API的结合使用,使得...

    html2canvas.js

    例如,电商网站可能需要提供用户将购物清单保存为PDF的功能,或者在线教育平台可能需要用户下载自定义的学习笔记。在这种情况下,html2canvas负责将HTML内容转为图像,然后jsPDF将这些图像和额外的文本信息组合成一...

    HTML5 Canvas学习笔记(8)俄罗斯方块游戏之二(方块)

    这篇“HTML5 Canvas学习笔记(8)俄罗斯方块游戏之二(方块)”主要探讨了如何利用Canvas来实现经典游戏——俄罗斯方块的方块部分。我们将深入探讨相关知识点,包括Canvas基本操作、事件处理、动画原理以及游戏逻辑。 ...

    html2Canvas截图加demo

    HTML2Canvas是一个JavaScript库,它的主要功能是在浏览器端将HTML内容转换为Canvas图像,进而可以进一步导出为图片格式,如JPEG、PNG等。这个工具对于网页开发者来说非常有用,因为它允许用户在不借助服务器端处理的...

    html2canvas 1.0.0-rc.5

    低版本HTML2canvas 前端开发 生成海报 截图等功能 1.该脚本允许您直接在用户浏览器上对网页或其部分进行“截图”。屏幕截图基于 DOM,因此可能不是 100% 准确到真实表示,因为它不会制作实际的屏幕截图,而是根据...

    html2canvas案例解决模糊不清及滚动下拉问题(已测试,可直接应用到项目中)

    解决方法是手动调整图片的大小,使其在Canvas上显示时与原始尺寸相同。 3. **CSS3效果**:某些CSS3效果,如阴影、渐变,可能无法在Canvas上完美呈现,导致模糊。可以考虑移除这些效果,或者使用纯色替代。 **二、...

Global site tag (gtag.js) - Google Analytics