【代码分享】简单html5足球射门游戏分享
之前空余时间想玩玩html5, 于是使用2.2.2的cocos2d-html5 制作了个简单的足球射门游戏 ,美术是自己在纸上画完用手机拍下再ps扣的图,哈哈,赞一下自己的创意。
在我的主页可以玩这个游戏: http://www.jd85.net/ballfoot/
很简单的几个类,就不在这里讲解了。附件里有完整项目源码和cocostudio项目可在本人发布在cocoachina论坛里的帖子内下载: http://www.cocoachina.com/bbs/read.php?tid=213943
补上代码:
cocos2d.js中部分需要修改代码:
var c = {
COCOS2D_DEBUG:2, //0 to turn debug off, 1 for basic debug, and 2 for full debug
box2d:false,
chipmunk:false,
showFPS:false,
frameRate:60,
loadExtension:false,
renderMode:0, //Choose of RenderMode: 0(default), 1(Canvas only), 2(WebGL only)
tag:'gameCanvas', //the dom element to run cocos2d on
// engineDir:'../cocos2d/',
SingleEngineFile:'Cocos2d-html5-v2.2.2.min.js',
appFiles:[
'src/resource.js',
// 'src/myApp.js'//add your own files in order here
'src/GameScene.js',
'src/StartLayer.js',
'src/GameLayer.js',
'src/GameOverLayer.js', 'libs/CCNotificationCenter.js',
'libs/MD5.js'
]
};
StartLayer.js:
/**
* Created by JiaDing on 14-4-19.
*/
var StartLayer = cc.Layer.extend({ init:function()
{
if(this._super())
{ return true;
}
return false;
}, onEnter:function()
{
this._super();
var uiLayer = ccs.UILayer.create();
this.addChild(uiLayer); var widget = ccs.GUIReader.getInstance().widgetFromJsonFile(s_exportJson_StartPanel);
widget.setPositionX(widget.getPositionX() + 100);
uiLayer.addWidget(widget); var titleAction = ccs.ActionManager.getInstance().getActionByName("StartPanel.ExportJson","Animation0");
if(titleAction)
{
titleAction.play();
} var startBtn = uiLayer.getWidgetByName("Button_25");
startBtn.addTouchEventListener(function(object,touchType){ if(touchType == cc.TOUCH_ENDED)
{
cc.AudioEngine.getInstance().playEffect(s_sound_btn,false);
cc.NotificationCenter.getInstance().postNotification("changeToGameLayer");
} }.bind(this) ,this);
}, onExit:function()
{ this._super();
} }); StartLayer.create = function()
{
var obj = new StartLayer();
if(obj && obj.init())
{
return obj;
}
return null;
}
resource.js:
var s_pic_bg = "res/bg.png";
var s_pic_dashBoard = "res/dashBoard.png";
var s_pic_arrow = "res/arrow.png";
//var s_pic_transitbg = "res/transitbg.png";
var s_pic_transitbg = "res/transitbg.png";
var s_pic_door = "res/door.png"; var s_sound_win = "res/win.mp3";
var s_sound_lose = "res/lose.mp3";
var s_sound_kick = "res/kick.mp3";
var s_sound_btn = "res/btn.mp3";
var s_sound_bg = "res/bg.mp3"; var s_exportJson_FootMan = "res/FootMan/FootMan.ExportJson";
var s_plist_FootMan = "res/FootMan/FootMan0.plist";
var s_pic_FootMan = "res/FootMan/FootMan0.png"; var s_exportJson_LosePanel = "res/Panel/LosePanel.ExportJson";
var s_exportJson_StartPanel = "res/Panel/StartPanel.ExportJson";
var s_exportJson_WinPanel = "res/Panel/WinPanel.ExportJson";
var s_plist_Panel = "res/Panel/Panel0.plist";
var s_pic_Panel = "res/Panel/Panel0.png"; var s_exportJson_RoundBall = "res/RoundBall/RoundBall.ExportJson";
var s_plist_RoundBall = "res/RoundBall/RoundBall0.plist";
var s_pic_RoundBall = "res/RoundBall/RoundBall0.png"; var g_resources = [
//image
{src:s_pic_bg},
{src:s_pic_dashBoard},
{src:s_pic_arrow},
{src:s_pic_transitbg},
{src:s_pic_door}, {src:s_sound_win},
{src:s_sound_lose},
{src:s_sound_kick},
{src:s_sound_btn},
{src:s_sound_bg}, {src:s_exportJson_FootMan},
{src:s_plist_FootMan},
{src:s_pic_FootMan}, {src:s_exportJson_LosePanel},
{src:s_exportJson_StartPanel},
{src:s_exportJson_WinPanel},
{src:s_plist_Panel},
{src:s_pic_Panel},
{src:s_exportJson_RoundBall},
{src:s_plist_RoundBall},
{src:s_pic_RoundBall} //plist //fnt //tmx //bgm //effect ];
GameScene.js:
/**
* Created by JiaDing on 14-4-19.
*/ var GameScene = cc.Scene.extend({ TAG_CurrentView:1, onEnter:function()
{
this._super(); var winSize = cc.Director.getInstance().getWinSize();
var w = winSize.width;
var h = winSize.height;
var bg = cc.Sprite.create(s_pic_bg);
bg.setAnchorPoint(0,0);
this.addChild(bg,0); var startLayer = StartLayer.create();
this.addChild(startLayer,1,this.TAG_CurrentView); cc.AudioEngine.getInstance().preloadSound(s_sound_bg);
cc.AudioEngine.getInstance().preloadSound(s_sound_btn);
cc.AudioEngine.getInstance().preloadSound(s_sound_kick);
cc.AudioEngine.getInstance().preloadSound(s_sound_lose);
cc.AudioEngine.getInstance().preloadSound(s_sound_win); cc.AudioEngine.getInstance().playMusic(s_sound_bg,true); cc.NotificationCenter.getInstance().addObserver(this,this.changeToGameLayer,"changeToGameLayer");
cc.NotificationCenter.getInstance().addObserver(this,this.gameOver,"gameOver"); },
changeToGameLayer:function()
{
this.removeChildByTag(this.TAG_CurrentView,true); var gameLayer = GameLayer.create();
this.addChild(gameLayer,1,this.TAG_CurrentView);
},
gameOver:function(isWin)
{
this.removeChildByTag(this.TAG_CurrentView,true);
var overLayer = GameOverLayer.create(isWin);
this.addChild(overLayer,1,this.TAG_CurrentView);
} });
GameOverLayer.js:
/**
* Created by JiaDing on 14-4-20.
*/ var GameOverLayer = cc.Layer.extend({ isWin:false, init:function(isWin)
{
if(this._super())
{
this.isWin = isWin; return true;
}
return false;
}, onEnter:function()
{
this._super();
var uiLayer = ccs.UILayer.create();
this.addChild(uiLayer); if(this.isWin)
{
cc.AudioEngine.getInstance().playEffect(s_sound_win,false); var widget = ccs.GUIReader.getInstance().widgetFromJsonFile(s_exportJson_WinPanel);
widget.setPositionX(widget.getPositionX() + 100);
uiLayer.addWidget(widget); var titleAction = ccs.ActionManager.getInstance().getActionByName("WinPanel.ExportJson","QiuJInLe");
if(titleAction)
{
titleAction.play();
} var startBtn = uiLayer.getWidgetByName("Button_35");
startBtn.addTouchEventListener(function(object,touchType){ if(touchType == cc.TOUCH_ENDED)
{
cc.AudioEngine.getInstance().playEffect(s_sound_btn,false);
cc.NotificationCenter.getInstance().postNotification("changeToGameLayer");
} }.bind(this) ,this);
}
else
{ cc.AudioEngine.getInstance().playEffect(s_sound_lose,false); var widget = ccs.GUIReader.getInstance().widgetFromJsonFile(s_exportJson_LosePanel);
widget.setPositionX(widget.getPositionX() + 100);
uiLayer.addWidget(widget); var titleAction = ccs.ActionManager.getInstance().getActionByName("LosePanel.ExportJson","Animation0");
if(titleAction)
{
titleAction.play();
} var startBtn = uiLayer.getWidgetByName("Button_35_Copy0");
startBtn.addTouchEventListener(function(object,touchType){ if(touchType == cc.TOUCH_ENDED)
{
cc.AudioEngine.getInstance().playEffect(s_sound_btn,false);
cc.NotificationCenter.getInstance().postNotification("changeToGameLayer");
} }.bind(this) ,this);
} }, onExit:function()
{ this._super();
} }); GameOverLayer.create = function(isWin)
{
var obj = new GameOverLayer(isWin);
if(obj && obj.init(isWin))
{
return obj;
}
return null;
}
GameLayer.js:
/**
* Created by JiaDing on 14-4-20.
*/ var GameLayer = cc.Layer.extend({ TAG_MAN:1,
TAG_Ball:2,
TAG_DashBoard:3,
TAG_DOOR:4, havePcMouseDown:false,
rotationSpeed:11, MIN_ROTATION: - 135,
MAX_ROTATION: -45, init:function()
{
if(this._super())
{ var winSize = cc.Director.getInstance().getWinSize(); var door = cc.Sprite.create(s_pic_door);
var scale = 0.7;
door.setScale(scale);
door.setAnchorPoint(cc.p(0,1));
door.setPosition(cc.p((winSize.width + 30 - door.getContentSize().width * scale)/2,
winSize.height-150));
this.addChild(door);
door.setTag(this.TAG_DOOR); var dashBoardBg = cc.Sprite.create(s_pic_dashBoard);
dashBoardBg.setAnchorPoint(cc.p(0.5,0));
dashBoardBg.setScale(0.7);
dashBoardBg.setPosition(cc.p(winSize.width - dashBoardBg.getContentSize().width * dashBoardBg.getScale()/2,dashBoardBg.getContentSize().height / 2 + 300));
this.addChild(dashBoardBg);
dashBoardBg.setTag(this.TAG_DashBoard); var arrow = cc.Sprite.create(s_pic_arrow);
arrow.setAnchorPoint(cc.p(0,0.5));
arrow.setScale(0.55);
arrow.setPositionX(dashBoardBg.getContentSize().width/2);
arrow.setRotation(-90);
dashBoardBg.addChild(arrow);
arrow.setTag(1); ccs.ArmatureDataManager.getInstance().addArmatureFileInfo(s_exportJson_FootMan);
ccs.ArmatureDataManager.getInstance().addArmatureFileInfo(s_exportJson_RoundBall); var man = ccs.Armature.create("FootMan");
man.setAnchorPoint(cc.p(0,0));
man.setPosition(cc.p(100,20));
this.addChild(man);
man.setTag(this.TAG_MAN); var ball= ccs.Armature.create("RoundBall");
ball.setScale(0.6);
ball.setPosition(cc.p(winSize.width/2,200));
this.addChild(ball);
ball.setTag(this.TAG_Ball); var label = cc.LabelTTF.create("你认为我会告诉你鼠标按着不动瞄准,\n松开射门这句话么?","Microsoft Yahei Font",25);
label.setPosition(cc.p(winSize.width/2,70));
label.setColor(cc.c3b(255,0,0));
this.addChild(label); if( 'touches' in sys.capabilities )
this.setTouchEnabled(true);
else if ('mouse' in sys.capabilities )
this.setMouseEnabled(true); return true;
}
return false;
}, touchenable:true,
haveMobileTouch:false, onTouchesBegan:function()
{
if(!this.touchenable)
{
this.haveMobileTouch = false;
return false;
}
this.touchenable = false;
this.haveMobileTouch = true;
this.ready();
return true;
},
onMouseDown:function (event)
{
if(!this.touchenable)
{
this.havePcMouseDown = false;
return;
}
this.touchenable = false;
this.havePcMouseDown = true;
this.ready();
}, onTouchesEnded:function()
{
if(this.haveMobileTouch)
{
this.run();
}
},
onMouseUp:function()
{ if(this.havePcMouseDown)
{
this.run();
}
}, ready:function()
{
this.schedule(this.update,0.016);
},
update:function()
{
var arrow = this.getChildByTag(this.TAG_DashBoard).getChildByTag(1);
var rot = arrow.getRotation();
if(rot <= -135 || rot >= -45)
{
this.rotationSpeed = this.rotationSpeed * -1;
}
arrow.setRotation(rot + this.rotationSpeed);
},
run:function()
{
this.unschedule(this.update); var man = this.getChildByTag(this.TAG_MAN);
man.getAnimation().playWithIndex(0); var action = cc.Sequence.create(
cc.MoveBy.create(2,cc.p(150,50)),
cc.DelayTime.create(0.3),
cc.CallFunc.create(function(){
this.kick();
}.bind(this),this)
);
man.runAction(action);
},
kick:function()
{
var man = this.getChildByTag(this.TAG_MAN);
man.getAnimation().playWithIndex(1);
man.getAnimation().setMovementEventCallFunc(function(armature, movementType, movementID){
if (movementType == ccs.MovementEventType.complete)
{
cc.AudioEngine.getInstance().playEffect(s_sound_kick,false); var ball = this.getChildByTag(this.TAG_Ball);
ball.getAnimation().playWithIndex(0); var arrow = this.getChildByTag(this.TAG_DashBoard).getChildByTag(1);
var rotation = arrow.getRotation();
var door = this.getChildByTag(this.TAG_DOOR);
var doorWidth = door.getContentSize().width * door.getScale();
var doorHeight = door.getContentSize().height * door.getScale(); var doorLeftX = door.getPositionX();
var doorRightX = door.getPositionX() + doorWidth; var minX = doorLeftX - 300;
var maxX = doorRightX + 300;
var targetX = (rotation + (this.MIN_ROTATION * -1)) / (this.MAX_ROTATION + (this.MIN_ROTATION * -1)) * (maxX - minX) + minX; var action = cc.Sequence.create(
cc.MoveTo.create(1,cc.p(targetX,door.getPositionY() - doorHeight + 30)),
cc.CallFunc.create(function(){
var win = false;
if(targetX > doorLeftX && targetX < doorRightX)
{
win = true;
}
this.gameOVer(win);
}.bind(this),this)
);
ball.runAction(action);
}
}.bind(this),this); },
gameOVer:function(isWin)
{
cc.NotificationCenter.getInstance().postNotification("gameOver",isWin);
} }); GameLayer.create = function()
{
var obj = new GameLayer();
if(obj && obj.init())
{
return obj;
}
return null;
};
【代码分享】简单html5足球射门游戏分享的更多相关文章
- [置顶] 63行代码完美实现html5 贪吃蛇游戏
以前也很少关注html5,感觉选择html已经慢慢成为趋势,想了解下.就找了个游戏学习了,写完这个游戏感觉html5和js结合很紧密,如果js不是特别好.估计需要先补习下js,这个只是个人的建议,不一 ...
- 如何开发一个简单的HTML5 Canvas 小游戏
原文:How to make a simple HTML5 Canvas game 想要快速上手HTML5 Canvas小游戏开发?下面通过一个例子来进行手把手教学.(如果你怀疑我的资历, A Wiz ...
- 简单跳转到微信分享,基于libWeiChatSDK 和简单的自定义UIActivityViewController
一.自定义UIActivity: 如果想要自定义UIActivity必须知道UIActivityViewController.首先这个类主要是用于接受字符串,RUL类型和图片类型的数据用于分享和操作的 ...
- 一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法
有一段时间没有瞎折腾了. 这周一刚上班萌主过来反映说:微信里面打开聚客宝.分享功能是能够的(这里是用微信自身的js-sdk实现的).可是在android应用里面打开点击就没反应了:接下来狡猾的丁丁在产 ...
- 分享一组Rpg Marker人物行走,游戏素材图片,共20张图片
分享一组Rpg Marker人物行走,游戏素材图片,共20张图片 上面的下载地址链接是图片,无法直接复制哦!下载请直接点击: 游戏素材下载 或者复制以下链接:http://***/view/13.h ...
- 使用TypeScript实现简单的HTML5贪吃蛇游戏
TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.安德斯·海尔斯伯格,C#的首席架构师,已 ...
- (转)Java中使用正则表达式的一个简单例子及常用正则分享
转自:http://www.jb51.net/article/67724.htm 这篇文章主要介绍了Java中使用正则表达式的一个简单例子及常用正则分享,本文用一个验证Email的例子讲解JAVA中如 ...
- 实训六(Cocos2dx游戏分享到微信朋友圈----AppID的获取)
考虑把游戏分享到微信朋友圈,前面的博文已经写到,shareSDK是一个很好的选择,但是学习了几天时间,遇到了很多问题,与其在一棵树上吊死,还不如退一步海阔天空,先暂时放一放,于是我考虑了一下既然是分享 ...
- 经典 HTML5 & Javascript 俄罗斯方块游戏
Blockrain.js 是一个使用 HTML5 & JavaScript 开发的经典俄罗斯方块游戏.只需要复制和粘贴一段代码就可以玩起来了.最重要的是,它是响应式的,无论你的显示屏多么宽都能 ...
随机推荐
- centos 6.5 64位编译 apache2.4
apache 2.4的安装和 apache2.2的安装有所不同 首先进入 http://apr.apache.org/download.cgi 下载 apr 和 apr-util 两个软件包 yum ...
- Flume数据传输事务分析[转]
本文基于ThriftSource,MemoryChannel,HdfsSink三个组件,对Flume数据传输的事务进行分析,如果使用的是其他组件,Flume事务具体的处理方式将会不同.一般情况下,用M ...
- ubuntu14.10设置开机启动服务
1.比如lampp其他的都类似: 我是这么操作:(屌丝初学者) a.把lampp启动程序放到/etc/bin下面 b.vi /etc/rc.local ,加入lampp start(有了第一步就可以这 ...
- HDU 4906 Our happy ending(2014 Multi-University Training Contest 4)
题意:构造出n个数 这n个数取值范围0-L,这n个数中存在取一些数之和等于k,则这样称为一种方法.给定n,k,L,求方案数. 思路:装压 每位 第1为表示这种方案能不能构成1(1表示能0表示不能) ...
- NOIP2005 篝火晚会 解题报告
佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”.在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有n个同学,编号从1到n.一开始,同学们按照1,2,… ...
- 从原理上搞定编码(四)-- Base64编码
开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了.实际上Base64已经简单到不能再简单了,如果对它的理解还是模棱两可实在不应该.大概介绍一下Base64的相关内容,花几分钟时间就 ...
- svm特征
svm特征格式:<label><index1>:<value1><index1>:<value1>.... 其中<label> ...
- C语言中输入输出函数
1.1.1 格式化输入输出函数Turbo C2.0 标准库提供了两个控制台格式化输入. 输出函数printf() 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据.pri ...
- 笔记本安装Win2012R2 心得(包含无线网卡+有线网卡驱动解决方法)
笔记本:联想昭阳E47G 无线网卡安装方法: 系统安装完毕后将自动识别无线网卡驱动,但需要手动允许WLAN服务开启.(建议,如果是拿来办公或者家用,可以安装上桌面体验)不然,QQ发的截图双击都看不起. ...
- Oracle Data Integrator与OWB的集成及迁移
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...