[cocos2d-js]chipmunk例子(二)
var TAG_SPRITE_BALL = ;
var TAG_SPRITE_USER = ;
var TAG_SPRITE_NPC = ;
var PTM_RATIO = ;
var GRABABLE_MASK_BIT = <<;
var NOT_GRABABLE_MASK = ~GRABABLE_MASK_BIT; var MainLayer = cc.Layer.extend({
_ball:null,
_man:null,
_rpc:null,
_leftGoal:null,
_rightGoal:null,
_leftPower:null,
_rightPower:null,
_time:, space:null, ctor:function () {
this._super();
var size = cc.director.getWinSize(); this._ball = new Ball();
this._ball.x = size.width / ;
this._ball.y = size.height / ;
this.addChild(this._ball); // 左方向
var btnLeft = cc.MenuItemImage.create(
res.btn_left_up,
res.btn_left_down,
function () {
this._man.runLeft();
}, this);
btnLeft.x = ; // 右方向
var btnRight = cc.MenuItemImage.create(
res.btn_right_up,
res.btn_right_down,
function () {
this._man.runRight();
}, this);
btnRight.x = ; // power
var btnPower = cc.MenuItemImage.create(
res.btn_power_up,
res.btn_power_down,
function () {
this._man.power();
}, this);
btnPower.x = ; // jump
var btnJump = cc.MenuItemImage.create(
res.btn_jump_up,
res.btn_jump_down,
function () {
this._man.jump();
}, this);
btnJump.x = ; // kick
var btnKick = cc.MenuItemImage.create(
res.btn_kick_up,
res.btn_kick_down,
function () {
this._man.kick();
}, this);
btnKick.x = ; // 暂停
var btnPause = cc.MenuItemImage.create(
"res/pause.png",
"res/pause2.png",
function () {
this.onStop();
}, this);
btnPause.x = size.width - ;
btnPause.y = size.height - ; var menu = cc.Menu.create(btnLeft, btnRight, btnPower, btnJump, btnKick, btnPause);
menu.x = ;
menu.y = ;
this.addChild(menu, ); // 主角
this._man = new Footballer_cn();
this._man.flippedX = true;
this._man.x = ;
this._man.y = ;
this._man.anchorX = 0.5;
this._man.anchorY = ;
this.addChild(this._man,,TAG_SPRITE_USER);
this._npc = new Footballer_br();
this._npc.x = size.width - ;
this._npc.y = ;
this._npc.anchorX = 0.5;
this._npc.anchorY = ;
this.addChild(this._npc,,TAG_SPRITE_NPC); // 球门
this._leftGoal = new Goalpost(true);
this._leftGoal.x = ;
this._leftGoal.y = ;
this._leftGoal.anchorX = ;
this._leftGoal.anchorY = ;
this.addChild(this._leftGoal); this._rightGoal = new Goalpost();
this._rightGoal.x = size.width;
this._rightGoal.y = ;
this._rightGoal.anchorX = ;
this._rightGoal.anchorY = ;
this.addChild(this._rightGoal); // power
this._leftPower = new PowerProgress(size.width/-,size.height-,,0.5,this);
this.addChild(this._leftPower, );
this._rightPower = new PowerProgress(size.width/+,size.height-,,0.5,this);
this.addChild(this._rightPower, ); // 系统计划任务,即每帧调用update函数
this.scheduleUpdate();
// 自定义计划任务
this.schedule(this.uiSchedule, ); cc.sys.dumpRoot();
cc.sys.garbageCollect(); this.initChipmunk(); return true;
},
onStop:function () {
this._bStop = !this._bStop;
if (this._bStop == true) {
cc.director.pause();
}
else {
cc.director.resume();
}
}, update:function (dt) {
this.space.step(dt);
},
uiSchedule:function () {
this._time++;
this._leftPower.showPower();
this._rightPower.showPower();
},
initChipmunk:function() {
this.space = new cp.Space();
var sprite = this.createPhysicsSprite( cc.p(cc.director.getWinSize().width/ , cc.director.getWinSize().height-) );
this.addChild( sprite, ); this.addWalls();
this.space.gravity = cp.v(, -);
},
initPhysics:function() {
var space = this.space ;
var staticBody = space.staticBody;
var winSize = cc.director.getWinSize(); // Walls
var walls = [ new cp.SegmentShape( staticBody, cp.v(,), cp.v(winSize.width,), ), // bottom
new cp.SegmentShape( staticBody, cp.v(,winSize.height), cp.v(winSize.width,winSize.height), ), // top
new cp.SegmentShape( staticBody, cp.v(,), cp.v(,winSize.height), ), // left
new cp.SegmentShape( staticBody, cp.v(winSize.width,), cp.v(winSize.width,winSize.height), ) // right
];
for( var i=; i < walls.length; i++ ) {
var shape = walls[i];
shape.setElasticity();
shape.setFriction();
space.addStaticShape( shape );
} // Gravity
space.gravity = cp.v(, -);
},
addWalls:function() {
// Walls
var winSize = cc.director.getWinSize();
var walls = [ new cp.SegmentShape( this.space.staticBody, cp.v(,), cp.v(winSize.width,), ), // bottom
new cp.SegmentShape( this.space.staticBody, cp.v(,winSize.height), cp.v(winSize.width,winSize.height), ), // top
new cp.SegmentShape( this.space.staticBody, cp.v(,), cp.v(,winSize.height), ), // left
new cp.SegmentShape( this.space.staticBody, cp.v(winSize.width,), cp.v(winSize.width,winSize.height), ) // right
];
for( var i=; i < walls.length; i++ ) {
var shape = walls[i];
shape.setElasticity(0.8);
shape.setFriction(0.1);
this.space.addStaticShape( shape );
}
},
createPhysicsSprite:function( pos ) { var radius = ;
var mass = ; var body = new cp.Body(mass, cp.momentForCircle(mass, , radius,cp.v(, )));
body.setPos( pos );
this.space.addBody( body );
var shape = new cp.CircleShape(body, radius,cp.v(, )); //new cp.BoxShape( body, 48, 108);
shape.setElasticity( );
shape.setFriction( 0.1 ); this.space.addShape( shape ); var sprite = cc.PhysicsSprite.create(res.b_ball_01);
sprite.setBody( body );
return sprite;
},
setupDebugNode:function()
{
// debug only
this._debugNode = cc.PhysicsDebugNode.create( this.space );
this._debugNode.visible = false ;
this.addChild( this._debugNode );
}
}); var MainScene = cc.Scene.extend({
onEnter:function () {
this._super();
this.addChild(new GameBackgroundLayer());
this.addChild(new MainLayer());
}
});
[cocos2d-js]chipmunk例子(二)的更多相关文章
- 【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨
原文:[高德地图API]从零开始学高德JS API(二)地图控件与插件——测距.圆形编辑器.鼠标工具.地图类型切换.鹰眼鱼骨 摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装 ...
- qrcode.js 动态生成二维码
用qrcode.js动态生成二维码图片非常简单,只需要引入qrcode.js即可使用,而且可以自定义图片大小.背景色等信息. 1.jsp代码---页面头部引入qrcode.js,jquery文件可选 ...
- node.js 初学(二)—— 搭建注册/登录服务器
node.js 初学(二)—— 搭建注册/登录服务器 理论上来说,代码实现在理论和实际上是一样的.但实际上来说,他们不是 做一个最简单的用户注册登录功能 1.接口定义: 注册:/user?act=re ...
- js生成简单二维码
js文件下载地址:https://download.csdn.net/download/weixin_38296752/10554485 一.引入qrcode.js文件 <script type ...
- 进击Node.js基础(二)
一.一个牛逼闪闪的知识点Promise npm install bluebird 二.Promise实例 ball.html <!doctype> <!DOCTYPE html> ...
- js生成中文二维码
http://www.cnblogs.com/xcsn/archive/2013/08/14/3258035.html http://www.jb51.net/article/64928.htm 使用 ...
- cocos2d js jsb XMLHttpRequest 中文乱码
1.首先讲下怎样使用XMLHttpRequest 下面所说的是在cocos2d-x 2.2.2 或者 2.3 版本号中. 首先要明确cocos2d js事实上分两个版本号,一个是html5的版本号,另 ...
- cocos2d js的一些tip
cocos2d-js-v3.2-rc0 cc.director.end();//退出app cc.Application.getInstance().openURL("http://www. ...
- cocos2d js ClippingNode 制作标题闪亮特效
1.效果图: 之前在<Android 高仿 IOS7 IPhone 解锁 Slide To Unlock>中制作了文字上闪亮移动的效果,这次我们来看下怎样在cocos2d js 中做出类似 ...
- Cordova app 检查更新 ----JS进行调用(二)
原文:Cordova app 检查更新 ----JS进行调用(二) 1.获取版本号 需要添加 插件 cordova plugin add https://github.com/whiteoctober ...
随机推荐
- Mtk Android 打包解包*.img
打包/解包 boot.img, system.img, userdata.img, or recovery.img [DESCRIPTION] MTK codebase编译出来的image必须使用MT ...
- CSS之弧形阴影
简述 网页上经常会出现一些弧形的阴影效果,看起来很漂亮,下面我们来讲述下如何用CSS来实现一个弧形阴影. 简述 阴影 效果 注释 标题 效果 源码 合并 效果 源码 阴影 效果 首先实现一个简单的阴影 ...
- 转:整理一下Entity Framework的查询
Entity Framework是个好东西,虽然没有Hibernate功能强大,但使用更简便.今天整理一下常见SQL如何用EF来表达,Func形式和Linq形式都会列出来(本人更喜欢Func形式). ...
- jsp 三大指令和动作标签
jsp三大指令 一个jsp页面中可以有0-N个指令 1.page--->最复杂:<%@page language="" ...%> *pageEncoding和c ...
- Java 碰撞的球 MovingBall (整理)
package demo; /** * Java 碰撞的球 MovingBall (整理) * 声明: * 这份源代码没有注释,已经忘记了为什么要写他了,基本上应该是因为当时觉得好玩吧. * 有时候想 ...
- 学习java之HashMap和TreeMap
HashMap和TreeMap是Map接口的两种实现,ArrayDeque和LinkedList是Queue接口的两种实现方式.下面的代码是我今天学习这四个数据结构之后写的.还是不熟悉,TreeMap ...
- erl0007 - erlang 远程节点连接的两种方式
启动连接:erl -setcookie abc -name xxx@192.168.x.x -remsh xxx@192.168.x.y 退出:ctrl + g,q 参考:http://www.cnb ...
- foreach的指针问题
从代码: $arr = array(,,,,); echo '$arr = array(1,2,3,4,5)','<br>'; foreach($arr as $key => &am ...
- 【英语】Bingo口语笔记(17) - 表示“感谢/不用客气“
- 【Python】类和对象、继承、使用文件、存储、异常、标准库(不懂)
当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)——这就是self ...