Main.as

  1. package{
  2. import Box2D.Common.Math.b2Vec2;
  3. import Box2D.Dynamics.b2Body;
  4. import Box2D.Dynamics.Contacts.b2Contact;
  5. import Box2D.Collision.b2Manifold;
  6. import Box2D.Dynamics.b2ContactImpulse;
  7.  
  8. public class Main extends BaseMain{
  9.  
  10. public function Main(){
  11. super(new b2Vec2(0,0));
  12. }
  13.  
  14. override protected function init():void{
  15. UIManager.getInstance().init(this);
  16.  
  17. var boxA:b2Body=createBox(30,30,50,300);
  18. var circle:b2Body=createCircle(15,50,400);
  19. var boxB:b2Body=createBox(50,200,700,300);
  20. boxA.SetUserData({type:"boxA"});
  21. circle.SetUserData({type:"circle"});
  22. boxB.SetUserData({type:"boxB"});
  23.  
  24. boxB.SetType(b2Body.b2_staticBody);
  25.  
  26. boxA.SetType(b2Body.b2_kinematicBody);
  27. boxA.SetLinearVelocity(new b2Vec2(10,0));
  28. boxA.SetPreSolveCallback(preSolve);
  29. boxA.SetContactBeginCallback(contactBegin);
  30. boxA.SetContactEndCallback(contactEnd);
  31. boxA.SetPostSolveCallback(postSolve);
  32.  
  33. circle.SetType(b2Body.b2_dynamicBody);
  34. circle.SetLinearVelocity(new b2Vec2(5,0));
  35. circle.SetPreSolveCallback(preSolve);
  36. circle.SetContactBeginCallback(contactBegin);
  37. circle.SetContactEndCallback(contactEnd);
  38. circle.SetPostSolveCallback(postSolve);
  39. }
  40.  
  41. private function contactBegin(contact:b2Contact,other:b2Body):void{
  42. UIManager.getInstance().print("contactBegin:"+other.GetUserData().type);
  43. }
  44.  
  45. private function contactEnd(contact:b2Contact,other:b2Body):void{
  46. UIManager.getInstance().print("contactEnd:"+other.GetUserData().type);
  47. }
  48.  
  49. private function postSolve(contact:b2Contact,impulse:b2ContactImpulse,other:b2Body):void{
  50. UIManager.getInstance().print("postSolve:"+other.GetUserData().type);
  51. }
  52.  
  53. private function preSolve(contact:b2Contact,oldManifold:b2Manifold,other:b2Body):void{
  54. UIManager.getInstance().print("preSolve:"+other.GetUserData().type);
  55.  
  56. }
  57.  
  58. override protected function stepBefore():void{
  59.  
  60. }
  61.  
  62. };
  63. }

示例:

源码下载:链接:http://pan.baidu.com/s/1bpL8chh 密码:qui7

kinematic与static刚体不会触发任何接触回调的更多相关文章

  1. ESP32 - GPIO中断触发与事件回调

    最近为项目增加了GPIO外部触发中断功能,原理是为GPIO32注册了上升沿触发事件,事件触发后,会向RTOS队列写入数据.在RTOS事件中检测到该队列中有新加入的事件,就读出,并执行相应代码. #de ...

  2. layer快速点击会触发多次回调

    场景还原 测试同学反馈点击了一次操作,为什么会有两条操作记录? 我:???? 排查思路 查看日志,看一下是不是发了两次请求,果不其然啊: 并发了,同一时间发送了两次请求,出现了脏写. 原因 系统的co ...

  3. Nape "不动"刚体的碰撞交互

    "不动"刚体,这里指的是以下两类刚体: 1.刚体的allowMovement和allowRotation都设false的刚体 2.KINEMATIC类型的刚体 如下代码,测试发现输 ...

  4. C# (事件触发)回调函数,完美处理各类疑难杂症!

    每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客! 废话说多了...... 嘿嘿:本篇标题为:C#  (事件触发)回调函数,完美处理各类疑难杂症.个人理解如下:事件触发也就是触 ...

  5. Unity 3d 刚体

    1.起始的设置如下图: 这是我们运行游戏,方块并不会往下掉. 2.选中CUBE,然后添加刚体                 此时再运行,会发现场景的方块会自动掉在地上. 3.我们来看一下刚体的属性 ...

  6. 一文聊透 Netty IO 事件的编排利器 pipeline | 详解所有 IO 事件的触发时机以及传播路径

    欢迎关注公众号:bin的技术小屋,本文图片加载不出来的话可查看公众号原文 本系列Netty源码解析文章基于 4.1.56.Final版本 1. 前文回顾 在前边的系列文章中,笔者为大家详细剖析了 Re ...

  7. 采用指数退避算法实现ajax请求的重发,全部完成时触发回调函数

    目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...

  8. 十四、Android学习笔记_Android回调函数触发的几种方式 广播 静态对象

    一.通过广播方式: 1.比如登录.假如下面这个方法是外界调用的,那么怎样在LoginActivity里面执行登录操作,成功之后在回调listener接口呢?如果是平常的类,可以通过构造函数将监听类对象 ...

  9. Web前端性能优化——高频触发事件的防抖

    JS 提供了行为层的支持,为用户提供了交互的操作性. 然而,部分事件却常常有意无意的被频繁触发.比方浏览器窗体的 resize 事件.某个元素的 mouseover 事件,假设处理触发事件的回调函数过 ...

随机推荐

  1. Android ImageView点击效果

    ImageView设置点击效果需要注意两点,第一个设置android:clickable="true",第二个 <item android:drawable="@d ...

  2. sshd服务安装

    SSHD服务 介绍:SSH 协议:安全外壳协议.为 Secure Shell 的缩写.SSH 为建立在应用层和传输层基础上的安全协议. 作用:sshd服务使用SSH协议可以用来进行远程控制, 或在计算 ...

  3. 用树莓派开Wifi热点

    安装软件 首先设置软件源: vim /etc/apt/sources.list 查看软件源后面的版本,如果是wheezy,需要换成jessie wheezy是基于deb 7的版本 而现在是基于jess ...

  4. C++连接mysql及遇到的相关问题

    最近接触了很多数据库的东西,本来是一直接触的是sql server,不过由于项目需要就开始对mysql进行了连接.下面就让我这个菜鸟浅谈下经验吧. 对于C++连接mysql,我不太喜欢多下载一个软件m ...

  5. urllib模块学习

    一.urllib库 概念:urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urll ...

  6. Thinkphp3.2+PHPQRCode 二维码生成示例

    下载phpqrcode 整合到Thinkphp框架 在“ThinkPHP\Library\Vendor\”下新建目录phpqrcode,将压缩包内容解压到该文件夹下. 下载地址:http://www. ...

  7. Centos7 开放80,3306端口解决办法

    所有扯iptables的文章都是扯淡!!! centos 7 默认防火墙由firewalld来管理!关iptables屁事! 以开放80端口为例,执行以下命令: 开放80端口:firewall-cmd ...

  8. jmeter插件如何协助进行内存监控 之 PerfMon Metrics Collector设置

    参考文章: http://www.cnblogs.com/zhaoxd07/p/5197669.html 当然最重要的是自己的实践,之前试的别人用的老的包 如XXstand.jar,结果并没有成功. ...

  9. 【Selenium-WebDriver自学】Selenium TestNG(十四)

    ==================================================================================================== ...

  10. php 目录

    1.laravel pswd  oauth2 2.理解二叉树 3.IOC容器 4.微信支付 4.1 微信支付申请 5.DI 6.支付宝 支付H5 7.html 转 word 8.php-fpm 启动详 ...