- 浏览: 263048 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (303)
- c (31)
- c++ (16)
- java (18)
- c# (1)
- python (3)
- java web (6)
- oracle (7)
- sqlserver (2)
- mysql (2)
- android (24)
- android系统 (15)
- android多媒体部分 (15)
- android游戏 (12)
- linux (26)
- javaScript (1)
- ajax (1)
- node JS (2)
- html (5)
- apache (3)
- jboss (1)
- weblogic (0)
- 通信协议 (10)
- 云计算 (1)
- 分布式 (5)
- ejb (1)
- webservice (5)
- 设计模式 (16)
- JNI (6)
- swing (13)
- 版本控制 (1)
- UML (1)
- xml (4)
- spring (5)
- hibernate (5)
- struts1 (3)
- struts2 (4)
- ibatis (0)
- tomcat (2)
- 心得体会 (1)
- css (1)
- 嵌入式 (41)
- arm体系结构 (10)
以下式例是摘自一位国际友人的代码
用html作开发确实速度快,但程序跑在手机上,运行效果却很难让人接受,此游戏在手机上测试,move事件基本让人感觉不出来,倒让人感觉像是click事件,如果有高人在这方面有研究还请指点一下,
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>蘑菇动起来</title>
<script type="text/javascript" src="./js/jquery-1.4.2.js">
</script>
<script type="text/javascript">
//全局变量
var backgroundForestImg = new Image();//森林背景图
var mushroomImg = new Image();//蘑菇
var bearEyesClosedImg = new Image();//闭着眼睛的熊熊
var ctx;//2d画布
var screenWidth;//画布宽度
var screenHeight;//画布高度
var speed = 2;//不变常量,从新开始的速度
var horizontalSpeed = speed;//水平速度,随着熊的碰撞会发生改变
var verticalSpeed = -speed; //垂直速度,开始肯定是要向上飘,所以要负数,随着熊的碰撞会发生改变
var bearAngle = 2;//熊旋转的速度
var flowerImg = new Image();//奖品鲜花
var leafImg = new Image();//奖品叶子
var acornImg = new Image();//奖品橡子
var gameRunning = false;//游戏运行状态
var gameloopId;//记住循环的变量
var lives = 3;//3条生命数
var livesImages = new Array();//生命图片数组
var score = 0;//分数
var scoreImg = new Image();//分数板
//公用 定义一个游戏物体戏对象
function GameObject(){
this.x = 0;
this.y = 0;
this.image = null;
}
//定义蘑菇Mushroom 继承游戏对象GameObject
function Mushroom(){
};
Mushroom.prototype = new GameObject();//游戏对象GameObject
//蘑菇实例
var mushroom = new Mushroom(); //循环描绘物体
//定义动物熊 Animal 继承 游戏对象GameObject
function Animal(){
};
Animal.prototype = new GameObject();//游戏对象GameObject
Animal.prototype.angle = 0;//动物的角度,目前中(即作为动物它在屏幕上旋转退回)
//定义熊实例
var animal = new Animal();
//定义奖品数组Prizes和对象Prize,继承游戏对象GameObject
var prizes = new Array();
function Prize(){
};
Prize.prototype = new GameObject();//继承游戏对象GameObject
Prize.prototype.row = 0;//奖品行位置
Prize.prototype.col = 0;//奖品列位置
Prize.prototype.hit = false;//是否被撞过
Prize.prototype.point = 0;//分数
function GameLoop(){
//清除屏幕
ctx.clearRect(0, 0, screenWidth, screenHeight);
ctx.save();
//绘制背景
ctx.drawImage(backgroundForestImg, 0, 0);
//绘制蘑菇
ctx.drawImage(mushroom.image, mushroom.x, mushroom.y);
//绘制奖品
DrawPrizes();
//绘制生命条
DrawLives();
//绘制分数板
DrawScore();
//绘制熊
//改变移动动物X和Y位置
animal.x += horizontalSpeed;
animal.y += verticalSpeed;
//改变翻滚角度
animal.angle += bearAngle;
//以当前熊的中心位置为基准
ctx.translate(animal.x + (animal.image.width / 2), animal.y + (animal.image.height / 2));
//根据当前熊的角度轮换
ctx.rotate(animal.angle * Math.PI / 180);
//描绘熊
ctx.drawImage(animal.image, -(animal.image.width / 2), -(animal.image.height / 2));
ctx.restore();
//检测是否碰到边界
HasAnimalHitEdge();
//检测熊碰撞蘑菇
HasAnimalHitMushroom();
//检测熊碰撞奖品
HasAnimalHitPrize();
}
//加载图片
function LoadImages(){
mushroomImg.src = "images/mushroom.png";//蘑菇
backgroundForestImg.src = "images/forest1.jpg";//森林背景图
bearEyesClosedImg.src = "images/bear_eyesclosed.png";//闭着眼睛的
flowerImg.src = "images/flower.png";//奖品花
acornImg.src = "images/acorn.png";//奖品橡子
leafImg.src = "images/leaf.png";//奖品叶子
scoreImg.src = "images/score.png";//分数板
//生命图片因为只有6个,所以最多只能6个
for (var x = 0; x < 6; x++) {
livesImages[x] = new Image();
livesImages[x].src = "images/lives" + x + ".png";
}
mushroom.image = mushroomImg;
animal.image = bearEyesClosedImg;
backgroundForestImg.onload = function(){
GameLoop();
};
}
//熊碰撞边界
function HasAnimalHitEdge(){
//熊碰到右边边界
if (animal.x > screenWidth - animal.image.width) {
if (horizontalSpeed > 0)//假如向右移动
horizontalSpeed = -horizontalSpeed;//改变水平速度方向
}
//熊碰到左边边界
if (animal.x < -10) {
if (horizontalSpeed < 0)//假如向左移动
horizontalSpeed = -horizontalSpeed;//改变水平速度方向
}
//熊碰到下面边界
if (animal.y > screenHeight - animal.image.height) {
lives -= 1;//生命减1
if (lives > 0) {
horizontalSpeed = speed;
verticalSpeed = -speed;
animal.x = parseInt(screenWidth / 2);
animal.y = parseInt(screenHeight / 2);
$("#BtnImgStart").show();
ToggleGameplay();
GameLoop();
}
}
//熊碰到上边边界
if (animal.y < 0) {
verticalSpeed = -verticalSpeed;
}
if (lives <= 0)
GameOver();
}
//事件处理
function AddEventHandlers(){
//鼠标移动则蘑菇跟着移动
$("#container").mousemove(function(e){
mushroom.x = e.pageX - (mushroom.image.width / 2);
});
//开始按钮
$("#BtnImgStart").click(function(){
ToggleGameplay();
});
}
//检测2个物体是否碰撞
function CheckIntersect(object1, object2, overlap){
// x-轴 x-轴
// A1——>B1 C1 A2——>B2 C2
// +——–+ ^ +——–+ ^
// | object1| | y-轴 | object2| | y-轴
// | | | | | |
// +——–+ D1 +——–+ D2
//
//overlap是重叠的区域值
A1 = object1.x + overlap;
B1 = object1.x + object1.image.width - overlap;
C1 = object1.y + overlap;
D1 = object1.y + object1.image.height - overlap;
A2 = object2.x + overlap;
B2 = object2.x + object2.image.width - overlap;
C2 = object2.y + overlap;
D2 = object2.y + object2.image.width - overlap;
//假如他们在x-轴重叠
if (A1 > A2 && A1 < B2 ||
B1 > A2 && B1 < B2) {
//判断y-轴重叠
if (C1 > C2 && C1 < D1 ||
D1 > C2 && D1 < D2) {
//碰撞
return true;
}
}
return false;
}
//动物碰撞蘑菇
function HasAnimalHitMushroom(){
//假如碰撞
if (CheckIntersect(animal, mushroom, 5)) {
//假如碰撞的位置属于蘑菇的左下位置
if ((animal.x + animal.image.width / 2) < (mushroom.x + mushroom.image.width * 0.25)) {
horizontalSpeed = -speed;//反弹
}
//假如碰撞的位置属于蘑菇的左上位置
else
if ((animal.x + animal.image.width / 2) < (mushroom.x + mushroom.image.width * 0.5)) {
//反弹速度减半
horizontalSpeed = -speed / 2;
}
//假如碰撞的位置属于蘑菇的右上位置
else
if ((animal.x + animal.image.width / 2) < (mushroom.x + mushroom.image.width * 0.75)) {
horizontalSpeed = speed / 2;
}
else {
horizontalSpeed = speed;
}
verticalSpeed = -speed;//改变垂直速度。也即动物向上移动
}
}
//创建奖品数组
function InitPrizes(){
var count = 0;
//一共3行
for (var x = 0; x < 3; x++) {
//一共23列
for (var y = 0; y < 23; y++) {
prize = new Prize();
if (x == 0) {
prize.image = flowerImg;//鲜花放在第一行
prize.point = 3;//3分
}
if (x == 1) {
prize.image = acornImg;//豫子刚在第2行
prize.point = 2;//2分
}
if (x == 2) {
prize.image = leafImg;//叶子放在第3行
prize.point = 1;//1分
}
prize.row = x;
prize.col = y;
prize.x = 20 * prize.col + 10;//x轴位置
prize.y = 20 * prize.row + 40;//y轴位置
//装入奖品数组,用来描绘
prizes[count] = prize;
count++;
}
}
}
//绘制奖品,把奖品显示在画布上
function DrawPrizes(){
for (var x = 0; x < prizes.length; x++) {
currentPrize = prizes[x];
//假如没有被撞击,则描绘
if (!currentPrize.hit) {
ctx.drawImage(currentPrize.image, prizes[x].x, prizes[x].y);
}
}
if (AllPrizesHit()) {
GameOver();
}
}
//撞到奖品
function HasAnimalHitPrize(){
//取出所有奖品
for (var x = 0; x < prizes.length; x++) {
var prize = prizes[x];
//假如没有碰撞过
if (!prize.hit) {
//判断碰撞
if (CheckIntersect(prize, animal, 0)) {
prize.hit = true;
//熊反弹下沉
verticalSpeed = speed;
//总分增加
score += prize.point;
}
}
}
}
//判断是否撞完奖品,假如其中有一个
function AllPrizesHit(){
for (var c = 0; c < prizes.length; c++) {
checkPrize = prizes[c];
if (checkPrize.hit == false)
return false;
}
return true;
}
//开始或者暂停游戏
function ToggleGameplay(){
gameRunning = !gameRunning;
if (gameRunning) {
$("#BtnImgStart").hide();
gameloopId = setInterval(GameLoop, 10);
}
else {
clearInterval(gameloopId);
}
}
//结束游戏
function GameOver(){
gameRunning = false;
clearInterval(gameloopId);
alert("游戏结束!");
}
//描绘生命条
function DrawLives(){
ctx.drawImage(livesImages[lives], 0, 0);
}
//描绘分数
function DrawScore(){
ctx.drawImage(scoreImg, screenWidth - (scoreImg.width), 0);//分数板
ctx.font = "12pt Arial";
ctx.fillText("" + score, 425, 25); //得分
}
//初始化
$(window).ready(function(){
AddEventHandlers();//添加事件
LoadImages();
ctx = document.getElementById('canvas').getContext('2d'); //获取2d画布
screenWidth = parseInt($("#canvas").attr("width")); //画布宽度
screenHeight = parseInt($("#canvas").attr("height"));
//初始化蘑菇
mushroom.x = parseInt(screenWidth / 2);// 蘑菇X坐标
mushroom.y = screenHeight - 40;//蘑菇Y坐标
//初始化熊
animal.x = parseInt(screenWidth / 2);
animal.y = parseInt(screenHeight / 2);
//初始化奖品
InitPrizes();
});
</script>
</head>
<body>
<div id="container" style="border:1px solid; cursor:none; width:480px; height:300px;">
<canvas id="canvas" width="480" height="300">
</canvas>
</div>
<img id="BtnImgStart" style="position: absolute; left: 200px; top: 200px; cursor: pointer; float: left; display: block; " src="./images/start_button.png">
</body>
</html>
</body>
</html>
相关推荐
本资源提供了一套学习HTML5 RPG游戏的源码,旨在帮助开发者深入了解此类游戏的开发流程和技术细节。 在HTML5 RPG游戏中,主要涉及以下关键技术点: 1. HTML5 Canvas:Canvas是HTML5中的一个核心元素,用于在网页上...
总的来说,这个压缩包提供了一个基于HTML5的塔防游戏实例,有助于开发者和爱好者学习HTML5游戏开发,了解如何利用HTML5的特性构建交互性强、性能良好的网页游戏。通过研究这个游戏的源码,可以提升对HTML5、...
这个压缩包中的"经典HTML5小游戏h5游戏源代码合集(37款)"是针对学习者和开发者的一份宝贵资源,包含了各种类型的游戏源码,能够帮助你深入理解HTML5游戏开发的核心技术。 首先,我们来看一下标签中提及的一些具体...
总之,捕鱼达人html5小游戏源码提供了一个实践和学习HTML5游戏开发的宝贵机会,无论是对于新手还是有经验的开发者,都能从中受益匪浅。通过深入研究源码,可以掌握更多关于HTML5、JavaScript和游戏开发的知识,为...
本压缩包包含了215款不同的HTML5游戏项目源码,对于学习游戏开发、探索游戏设计思路以及理解如何将Web技术应用于游戏制作的开发者来说,是一个宝贵的学习资源。 HTML5游戏开发的基础是HTML5标准,这是一个开放的Web...
HTML5小游戏源码合集是一份集合了95款基于HTML5技术开发的小游戏的资源包,对于学习和研究HTML5游戏开发的人员来说,这是一个非常宝贵的资料库。这个合集不仅提供了各种类型的游戏,还可能包括源代码、设计文档和...
HTML5游戏案例是一种利用HTML5、CSS3和JavaScript技术创建的互动游戏,这些技术的结合为开发者提供了构建跨...通过学习和实践这些案例,开发者可以深入理解HTML5和JavaScript在游戏领域的应用,并提升自己的编程技能。
这个源码提供了一个完整的连连看游戏实现,对于学习HTML5游戏开发或者想要定制自己的连连看游戏的开发者来说非常有价值。 首先,HTML5游戏的核心在于HTML、CSS和JavaScript的结合。在这个连连看游戏中,HTML用于...
"80个超好玩的html5网页小游戏源码"这个压缩包文件包含了多种使用HTML5技术制作的小游戏,为学习者提供了实践和探索的机会。下面将详细阐述HTML5在游戏开发中的应用以及这些源码可能包含的知识点。 1. Canvas绘图:...
2. JavaScript编程:HTML5游戏主要依赖JavaScript进行逻辑处理,学习源码可以帮助我们理解事件监听、对象创建、函数调用、定时器等JS编程技巧。 3. Game Loop(游戏循环):大部分游戏都有一个游戏循环,用于不断...
HTML5作为下一代网页标准,其强大的功能和广泛的支持使得HTML5游戏在近年来迅速崛起,洛克王国HTML5游戏源码的公开,为开发者提供了一个深入学习和实践的机会。 首先,我们要理解HTML5的核心组成部分。HTML5中的...
HTML5小游戏源码集合是一个非常宝贵的资源,尤其对于想要学习和提升HTML5游戏开发技能的开发者来说。这个压缩包包含了80个不同的小游戏,每个都是按照微信小游戏的标准和风格设计的,提供了丰富的实践素材和灵感来源...
HTML5是一种强大的网页开发语言,它在过去的几年中迅速崛起,极大...总的来说,这个300MB的压缩包是HTML5游戏开发者的宝库,包含了大量的学习材料和实践案例,无论是为了学习、创新还是提升技能,都是不可多得的资源。
开发者可以借此学习和实践如何用HTML5创建互动游戏,同时也为爱好者提供了一个可自定义和拓展的游戏框架。通过服务器环境运行,玩家可以在任何支持HTML5的设备上体验这款游戏,体现了HTML5技术的跨平台优势。
学习和分析这些HTML5游戏源码,开发者可以理解游戏的架构设计,如何使用HTML5技术实现游戏逻辑,以及如何与服务器进行交互。这对于想要进入HTML5游戏开发领域的程序员来说是非常宝贵的资源,可以帮助他们快速掌握...
综上所述,这个"狂欢万圣节HTML5游戏源码"是一个学习HTML5游戏开发的好实例,涵盖了从基本的HTML5和JavaScript技术到游戏设计和优化的多个方面。通过研究源码,开发者不仅可以深化对HTML5的理解,还能学习到游戏开发...
通过研究"见缝插针"的HTML5游戏源码,我们可以学习到如何构建交互式Web应用,理解游戏开发的基本原理,提升JavaScript编程技巧,并且深入理解HTML5的特性。无论是对初学者还是有经验的开发者,这都是一份极好的学习...
描述与标题基本一致,再次强调了这是一个大型的H5小游戏源码包,特别适合那些想要学习或提升Html5和JavaScript编程技能的开发者。通过分析这些源码,开发者可以了解游戏逻辑、动画效果、用户交互以及数据管理等多个...
"HTML5游戏开发技术"这一主题包含了HTML5的图形绘制、音频处理、离线存储、多线程处理以及跨平台开发等多个方面的知识,对于想要踏入HTML5游戏开发领域的初学者或希望提升技能的开发者来说,是一份宝贵的学习资料。...
在这个"HTML5 RPG游戏学习源码"中,我们可以深入理解HTML5在游戏开发中的应用。 1. HTML5 Canvas:Canvas是HTML5中的一个核心元素,用于在网页上绘制2D图形。在这个源码中,index.html可能包含了游戏的主要入口,而...