`
yutiansky
  • 浏览: 197543 次
  • 性别: Icon_minigender_1
  • 来自: 本溪
社区版块
存档分类
最新评论

HTML5 Canvas 动画小例子

阅读更多

■概要

 ・HTML5のCanvasタグを使って回転しているボールを描くサンプルである。

 

■要点

 ・setIntervalを利用し、定時的にメソッドを呼ぶ

 ・contextのtranslate、rotate、drawImage、save、restoreを利用し、回転、イメージを描く

 

■ソース

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Ball</title>
</head>

<body>

<div style="text-align:center;">
	<canvas id="testCanvas" width="500" height="300" style="border:1px solid #1111AA;"></canvas>
</div>

<br>Debug Space<br>
<textarea id="debugDiv" style="border:1px solid #1111AA;width:500;height:150;font-size:small"></textarea>

<script type="text/javascript">
var dncsoft;
if (!dncsoft) dncsoft = {};

dncsoft.Debug = function() {};
dncsoft.Debug.prototype = {
	debug : function(p_msg) {
		var debugDiv = document.getElementById('debugDiv');
		if ( ! debugDiv ) return false;
		debugDiv.value = debugDiv.value + p_msg + "\n";
	},
	clear : function() {
		debugDiv.value = "";
	}
};
var g_log = new dncsoft.Debug();
g_log.clear();
//-----------------------------------------------
// dncsoft.Board
//-----------------------------------------------
dncsoft.Board = function() {};
dncsoft.Board.prototype = {
	_ctx : null,
	getCtx : function() {
		return _ctx;
	},

	init : function() {
		_width = 500;
		_height = 300;
		_canvas = document.getElementById('testCanvas');
		if ( ! _canvas || ! _canvas.getContext ) return false;
		_ctx = _canvas.getContext('2d');
	},
	
	draw : function() {
		_ctx.beginPath();
		_ctx.fillStyle = "#EEEEEE";
		_ctx.fillRect(0, 0, _width, _height);
	}
};

//-----------------------------------------------
// dncsoft.Ball
//-----------------------------------------------
dncsoft.Ball = function() {
	this._angle = 45;
	this._x = 0;
	this._y = 0;
};
dncsoft.Ball.prototype = {
	_angle :45,
	_x :0,
	_y :0,
	getAngle : function() {
		return this._angle;
	},
	setAngle : function(p_angle) {
		this._angle = p_angle;
	},
	
	init : function(p_ctx, p_angle) {
		this._x = 200;
		this._y = 100;
		_radius = 32;
		_speed = 1;
		_rotate = 2;
		_img = new Image();
		_img.src = "magic_ball.png";
		_ctx = p_ctx;
		this._angle = p_angle;
	},
	
	draw : function() {
		_rotate = (_rotate + 1) % 360;

		_ctx.save();
		_ctx.translate(this._x, this._y);
		_ctx.rotate(_rotate/180 * Math.PI);
		_ctx.translate(-16, -16);
		_ctx.drawImage(_img, 0, 0, _radius, _radius);
		_ctx.restore();

		this._x = this._x + (5 * Math.sin(this._angle/180 * Math.PI));
		this._y = this._y + (5 * Math.cos(this._angle/180 * Math.PI));
		_rotate = _rotate + 4;
		
		this.calcPath();
	},
	
	calcPath : function() {
		if (this._x < 16) {
			this._angle = 360 - this._angle;
		} else if (this._x > 500 - 16) {
			this._angle = 360 - this._angle;
		} else if (this._y < 16) {
			this._angle = 180 - this._angle;
		} else if (this._y > 300 - 16) {
			this._angle = 180 - this._angle;
		}
		this._angle = this._angle % 360;
	}
};

//-----------------------------------------------
// main
//-----------------------------------------------

var g_board;
var g_ball;
var g_counter;
var g_timerDrawID;

window.onload = function() {
	g_counter = 1000;
	g_board = new dncsoft.Board();
	g_board.init();

	g_ball = new dncsoft.Ball();
	g_ball.init(g_board.getCtx(), 30);

	g_timerDrawID = setInterval("ballMove()", 25);
};

function ballMove() {
	g_board.draw();
	g_ball.draw();
	g_counter--;
	if (g_counter <= 0) clearInterval(g_timerDrawID);
}
</script>
</body>
</html>
 

■結果

  • 大小: 6 KB
  • 大小: 15.5 KB
分享到:
评论

相关推荐

    html5 canvas绘制管道里跳动小球动画特效

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创造出丰富的交互式2D图形和动画。"html5 canvas绘制管道里...通过不断练习和改进,你可以创建出更加复杂和引人入胜的Canvas动画效果。

    HTML5 Canvas彩色渐变背景动画效果

    这款基于HTML5 Canvas的彩色渐变背景动画效果,是利用Canvas API来实现的一种互动性极强的视觉特效。当鼠标在画布上移动时,背景颜色会随着鼠标的移动而产生渐变变化,为用户提供了生动且引人入胜的交互体验。 首先...

    HTML5 Canvas 圆弧动画(绕四周运动)

    本知识点主要聚焦于HTML5 Canvas中的圆弧动画,特别是让图形绕着圆周运动的技术实现。在这个示例中,我们将探讨如何创建一个圆弧动画,使一个元素沿着圆形路径循环移动。 首先,我们需要在HTML文件中创建一个`...

    HTML5 Canvas五彩缤纷的3D发光水晶球动画

    在这个名为“HTML5 Canvas五彩缤纷的3D发光水晶球动画”的项目中,我们将深入探讨如何利用Canvas API来实现一个引人入胜的3D动画效果,特别是发光的水晶球。 首先,让我们了解HTML5 Canvas的基本结构。在HTML文件中...

    html5 canvas彩色流动线条动画特效

    本文将深入探讨如何使用HTML5 Canvas实现彩色流动线条的动画特效。 首先,要创建一个Canvas元素,我们需要在HTML文件中插入一个`&lt;canvas&gt;`标签,并为其指定一个ID,以便通过JavaScript进行访问: ```html &lt;canvas ...

    HTML5 canvas爱心表白动画.zip

    总的来说,这个“HTML5 canvas爱心表白动画”项目展示了canvas的灵活性和JavaScript的动态性,是学习和实践前端动画效果的好例子。通过深入理解并实践此类项目,开发者不仅可以提升在HTML5 canvas上的编程技能,还能...

    简单HTML5 Canvas Arrow旋转动画

    这个例子展示了HTML5 Canvas的基本使用,包括获取画布上下文、图形绘制、旋转以及动画实现。你可以根据需要调整箭头的形状、大小、颜色,或者改变旋转速度,以适应不同的应用场景。通过这种方式,HTML5 Canvas为...

    HTML5 Canvas海底鱼群游动动画特效

    "HTML5 Canvas海底鱼群游动动画特效"是一个利用Canvas API实现的创新性应用,旨在为网站增添生动有趣的视觉效果。在这个项目中,开发者通过JavaScript编程,模拟了沙丁鱼群在海底自由游动的情景,让访问者仿佛置身...

    HTML5 canvas星空屏保动画代码.zip

    总的来说,这个压缩包提供了一个学习和研究HTML5 canvas动画的好例子,涵盖了JavaScript编程、canvas API应用以及动画设计等多个关键点。无论是对前端开发者还是对网页动画感兴趣的初学者,都具有很高的参考价值。...

    HTML5 Canvas的一个例子

    学习HTML5 Canvas不仅可以提升网页的交互性和可视化,还能帮助开发者创建复杂的2D游戏、数据可视化图表以及各种动画效果。 在"LearnHtml5Show"这个文件中,可能包含了示例代码、教程或者是一个演示如何使用HTML5 ...

    HTML5 canvas闪电动画代码.zip

    这个“HTML5 canvas闪电动画代码.zip”压缩包包含了一个利用canvas实现的闪电动画效果,特别是当鼠标在画布上移动时,闪电会跟随鼠标位置并伴随颜色变化,为用户带来生动的交互体验。 首先,我们需要了解HTML5 ...

    HTML5 Canvas模拟下雨动画场景

    在这个特定的项目中,“HTML5 Canvas模拟下雨动画场景”是利用Canvas API创建的一个炫酷且逼真的动画效果,让访客仿佛置身于雨中。下面我们将详细探讨这个项目的实现原理、关键技术和相关知识点。 首先,`index....

    HTML5+Canvas打开红包获得流量动画代码.zip

    综上所述,这个项目涉及了HTML5的基础结构、Canvas的图形绘制、jQuery的事件处理和动画效果,以及CSS的样式设计,是一个很好的学习和实践这些技术的例子。对于开发者来说,不仅可以从中获取实际的代码实现,还可以...

    HTML5 Canvas全屏彩色气泡动画特效

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上...通过Canvas,开发者可以创建出各种复杂且互动的Web动画,这个全屏彩色气泡特效就是一个生动的例子,展示了HTML5 Canvas在增强用户体验方面的巨大潜力。

    HTML5无尽下坠弹性僵尸背景Canvas特效动画

    总结来说,"HTML5无尽下坠弹性僵尸背景Canvas特效动画"是一个结合了HTML5 Canvas、JavaScript编程、物理模拟和动画设计的项目。它展示了如何利用Web技术创造出引人入胜的用户体验,同时也是一个学习和实践Canvas API...

    HTML5 Canvas酷炫棱镜粒子飞出动画特效

    HTML5 Canvas的灵活性和强大的图形处理能力使得它可以创建出各种复杂的动画效果,而“酷炫棱镜粒子飞出动画特效”就是其中一个很好的例子。开发者通过巧妙地组合和应用Canvas API,能够实现粒子从特定形状出发,根据...

    html5 canvas动态图形动画下载.rar

    总之,这个压缩包提供的实例是一个综合运用HTML5 Canvas、jQuery和CSS特效的例子,对于想要深入理解这些技术的开发者来说,这是一个很好的学习资源。通过研究和实践这个代码,你可以了解到如何在网页上创建互动的、...

    html5 canvas雪花动画特效.zip

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上直接绘制图形,从而创建出丰富的交互式用户...通过分析和理解这个压缩包中的代码,可以深入了解Canvas动画的制作技巧,并进一步提升自己的前端开发技能。

    html5 canvas彩色烟花粒子动画特效

    在这个“html5 canvas彩色烟花粒子动画特效”项目中,开发者利用Canvas API创建了一个互动式的烟花秀,用户不仅可以欣赏到五彩斑斓的烟花绽放,还能通过右上角的设置调整动画参数,甚至通过鼠标点击触发新的烟花。...

    HTML5 Canvas螺旋线条动画特效.zip

    HTML5 Canvas是一个强大的Web图形接口,它允许开发者在网页上直接用JavaScript绘制图形。这个"HTML5 Canvas螺旋线条动画...通过学习和理解这个示例,开发者可以进一步提升自己在Canvas动画和网页图形设计方面的能力。

Global site tag (gtag.js) - Google Analytics