2014-05-02 34 views
0

嗨,我一直在探索cocos3D,我想知道如何检测主CC3Node的哪个子模式被触摸。我使用下面的代码:CC3Node - 检测CC3Node子节点上的触摸

rezNode = [CC3PODResourceNode nodeFromFile: @"BeachBall.pod"]; 
n = (CC3MeshNode*)[rezNode getNodeNamed: @"BeachBall"]; 
n.isOpaque = YES; 
[self configureAndAddTemplate: n]; 

这将创建主节点,然后我一个变量链接到子节点

self.childNode =(CC3Node*)[n getMeshNodeNamed: @"BeachBall-submesh1"]; 
self.childNode.isTouchEnabled=YES; 
self.childNode.visible=YES; 

现在我想检测到特定节点上的触摸。我的触摸方法正在触发,但我猜如何检查触摸是否在self.childNode上。

编辑: 在cocos3D编程指南一旦这两个步骤都完成了,提到

,该 nodeSelected:byTouchEvent:在:您的自定义 CC3World子类的回调方法会被自动调用在每个触摸事件上。 该回调包括在CC3Layer的本地 坐标中触摸的CC3Node实例,触摸的类型 以及触摸点的2D位置。

第一步是集成触摸代表,第二步是将节点属性设置为visible和touchesEnabled。我已经实施了这两个步骤,但仍然采用这种方法nodeSelected:byTouchEvent:at: is not firing。

回答

0

自己得到答案。正如测试项目中提到的,我们必须调用pickNodeFromTapAt: or pickNodeFromTouchEvent:at:来自动调用nodeSelected:byTouchEvent:at:。我正在做的是,这是在touchEventtouchBegan这个pickNodeFromTouchEvent:at:,我在我的场景中重写该方法。这是我没有重写它的问题,因为它已经在CC3Scene中声明了。所以只要我从我的CustomSecene类nodeSelected:byTouchEvent:at:删除了重写的方法被解雇了。

希望这可以帮助某人