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例子(二)的更多相关文章

  1. 【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

    原文:[高德地图API]从零开始学高德JS API(二)地图控件与插件——测距.圆形编辑器.鼠标工具.地图类型切换.鹰眼鱼骨 摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装 ...

  2. qrcode.js 动态生成二维码

    用qrcode.js动态生成二维码图片非常简单,只需要引入qrcode.js即可使用,而且可以自定义图片大小.背景色等信息. 1.jsp代码---页面头部引入qrcode.js,jquery文件可选 ...

  3. node.js 初学(二)—— 搭建注册/登录服务器

    node.js 初学(二)—— 搭建注册/登录服务器 理论上来说,代码实现在理论和实际上是一样的.但实际上来说,他们不是 做一个最简单的用户注册登录功能 1.接口定义: 注册:/user?act=re ...

  4. js生成简单二维码

    js文件下载地址:https://download.csdn.net/download/weixin_38296752/10554485 一.引入qrcode.js文件 <script type ...

  5. 进击Node.js基础(二)

    一.一个牛逼闪闪的知识点Promise npm install bluebird 二.Promise实例 ball.html <!doctype> <!DOCTYPE html> ...

  6. js生成中文二维码

    http://www.cnblogs.com/xcsn/archive/2013/08/14/3258035.html http://www.jb51.net/article/64928.htm 使用 ...

  7. cocos2d js jsb XMLHttpRequest 中文乱码

    1.首先讲下怎样使用XMLHttpRequest 下面所说的是在cocos2d-x 2.2.2 或者 2.3 版本号中. 首先要明确cocos2d js事实上分两个版本号,一个是html5的版本号,另 ...

  8. cocos2d js的一些tip

    cocos2d-js-v3.2-rc0 cc.director.end();//退出app cc.Application.getInstance().openURL("http://www. ...

  9. cocos2d js ClippingNode 制作标题闪亮特效

    1.效果图: 之前在<Android 高仿 IOS7 IPhone 解锁 Slide To Unlock>中制作了文字上闪亮移动的效果,这次我们来看下怎样在cocos2d js 中做出类似 ...

  10. Cordova app 检查更新 ----JS进行调用(二)

    原文:Cordova app 检查更新 ----JS进行调用(二) 1.获取版本号 需要添加 插件 cordova plugin add https://github.com/whiteoctober ...

随机推荐

  1. 12.allegro环境设置[原创]

    一.菜单简介 --- 分割电源,分割平面 ------- ------- ------- ----- --------- ---- --------------- ----------------- ...

  2. BZOJ 2752 高速公路(road)(线段树)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2752 题意:给出一个数列A,维护两种操作: (1)将区间[L,R]之内的所有数字增加de ...

  3. linux查看某个端口被占用

    如8003 端口 使用命令:netstat -nlptu |awk '{print $4,$7}' | grep 8003 [root[@bogon](/user/bogon) ~]# netstat ...

  4. 同步synchronized用法

    今天在高人的指导下,对同步synchronized用法有了更高一层的理解,非常感谢他的无私奉献.在此把代码贴出来方便日后查阅. publicclass SfServlet { privatestati ...

  5. arranging-coins

    https://leetcode.com/problems/arranging-coins/ public class Solution { public int arrangeCoins(int n ...

  6. 戏(细)说Executor框架线程池任务执行全过程(下)

    上一篇文章中通过引入的一个例子介绍了在Executor框架下,提交一个任务的过程,这个过程就像我们老大的老大要找个老大来执行一个任务那样简单.并通过剖析ExecutorService的一种经典实现Th ...

  7. C#发送手机验证码

    C#发送手机验证码,平台有很多,我就说说其中的1个平台 测试环境:.net2.0 测试效果:速度还可以,10秒内接收短信 1.去http://www.yuntongxun.com注册,会送8元测试金额 ...

  8. php最新出现的函数

    1. 数据过滤函数 filter_var:  filter_var — Filters a variable with a specified filter 过滤的类型有: Validate filt ...

  9. 【英语】Bingo口语笔记(8) - 爆破音的发音技巧

    轻读,有时候甚至是听不到的,就嘴巴碰一下而已.

  10. jQuery.validate API