今天在做应用程序的时候,需要在plane中响应鼠标单击事件。papervision3d中添加事件交互,一般的资料都是说创建viewport时候指定interactive为true,同时在创建材质(material)的时候指定材质的interactive属性为true,然后在组件上添加InteractiveScene3DEvent.OBJECT_CLICK消息响应函数。
按照以上的步骤操作后,点击plane,无法响应单击事件。仔细研究代码,没有问题。将网上的一些示例代码拿下来运行,调试也是正常的。一下子蒙了。开始还以为是将plane加入到uicomponent中导致事件无法响应,将示例代码模拟成自己应用程序的层次结构,照样正常响应。重新回到自己应用程序的代码中,鼠标点击事件死活不响应,百思不得其解。但有了示例代码成功的案例,心想自己的代码也一定可以的。于是开始逐步排查,后来尝试将plane的useOwnContainer 属性设置代码注释,应用程序中代码如下:_imagePlane.useOwnContainer = true;重新运行,点击,这次神奇般跳入到设定的断点中了。哈哈,这下高兴了。终于找到症结所在。由于没有太多时间研究papervision3的,有些参数始终没去弄明白它的具体含义,像useOwnContainer就是其中之一。没办法,项目时间紧迫,先能应付应用再说。有时间再仔细研究一下。
通过这次调试过程,总结了一点,有些属性自己不熟悉的还是不要乱用了,使用默认值最好,以免搞到出了问题还不知道问题所在。