zoukankan      html  css  js  c++  java
  • 使用PreListener与InteractionListener的一个小发现

     如果两个刚体使用PreListener忽略了它的碰撞时,如果这时你使用InteractionListener来侦听它们的碰撞还是可以侦听到的:

     1 package  {
     2     import com.bit101.components.TextArea;
     3     import nape.callbacks.CbEvent;
     4     import nape.callbacks.CbType;
     5     import nape.callbacks.InteractionCallback;
     6     import nape.callbacks.InteractionListener;
     7     import nape.callbacks.InteractionType;
     8     import nape.callbacks.PreCallback;
     9     import nape.callbacks.PreFlag;
    10     import nape.callbacks.PreListener;
    11     import nape.phys.Body;
    12     /**
    13      * ...
    14      * @author kingBook
    15      * 2015-02-01 21:18
    16      */
    17     public class Main extends BaseMain {
    18         
    19         public function Main() {
    20             super({gravity:{x:0,y:0}});
    21             
    22         }
    23         
    24         private var _box:Body;
    25         private var _circle:Body;
    26         private var _boxCbType:CbType=new CbType();
    27         private var _circleCbType:CbType=new CbType();
    28         private var _textArea:TextArea;
    29         override protected function createBodies():void {
    30             //矩形刚体
    31             _box=createBox(50,50,100,200);
    32             _box.cbTypes.add(_boxCbType);
    33             _box.space=_space;
    34             
    35             //圆形刚体
    36             _circle=createCircle(30,250,200);
    37             _circle.cbTypes.add(_circleCbType);
    38             _circle.space=_space;
    39             
    40             _space.listeners.add(new PreListener(InteractionType.COLLISION,_boxCbType,_circleCbType,ignoreHandler));
    41             _space.listeners.add(new InteractionListener(CbEvent.BEGIN,InteractionType.COLLISION,_boxCbType,_circleCbType,onHitBegin));
    42             
    43             //文本域
    44             _textArea=new TextArea(this,5,5);
    45         }
    46         
    47         private function ignoreHandler(cb:PreCallback):PreFlag{
    48             return PreFlag.IGNORE;
    49         }
    50         
    51         private function onHitBegin(cb:InteractionCallback):void{
    52             _textArea.text += "hit
    "
    53         }
    54         
    55     }
    56     
    57 }

     拖动矩形刚体与圆形刚体相碰依然可以看到输出: hit

    源码下载:http://yunpan.cn/cKBwzyNkfJN7P  访问密码 5883

  • 相关阅读:
    剑指 Offer 50. 第一个只出现一次的字符
    剑指 Offer 42. 连续子数组的最大和
    剑指 Offer 41. 数据流中的中位数
    剑指 Offer 40. 最小的k个数
    剑指 Offer 39. 数组中出现次数超过一半的数字
    剑指 Offer 38. 字符串的排列
    MySQL更改密码
    WPF中的MySQLHelper
    WPF多线程
    mysql-5.7.28-winx64(压缩包)安装教程
  • 原文地址:https://www.cnblogs.com/kingBook/p/4266103.html
Copyright © 2011-2022 走看看