如果在一个MESH对象上增加一个MouseEvent3D对象的侦听的话,只能在PC机上管用。在IPAD上调试的时候,编译器会报错:
Exception fault:TypeError: Error#1010: A term is undefinedand has no properties.at away3d.core.raycast.colliders::TriangleCollider/updateRay()[..\away3d\core\raycast\colliders\TriangleCollider.as:128]
这个问题是away3d4.0本身代码的问题,可能以后在新版本中会更新它。解决方案如下
在away3d核心包 away3d.core.raycast中MouseRaycast类做如下修改
1原来的代码
if( numItems > 0 ) _triangleCollider.updateRay( collisionVO.localRayPosition, collisionVO.localRayDirection );
改为
if( numItems > 0 && Capabilities.os.slice(0, 6) != "iPhone" ) _triangleCollider.updateRay( collisionVO.localRayPosition, collisionVO.localRayDirection );
2原来的代码
if( collisionVO.cameraIsInEntityBounds
|| item.renderable.mouseHitMethod == MouseHitMethod.MESH_CLOSEST_HIT
|| item.renderable.mouseHitMethod == MouseHitMethod.MESH_ANY_HIT)
改为
if( Capabilities.os.slice(0, 6) != "iPhone" &&
(collisionVO.cameraIsInEntityBounds
|| item.renderable.mouseHitMethod == MouseHitMethod.MESH_CLOSEST_HIT
|| item.renderable.mouseHitMethod == MouseHitMethod.MESH_ANY_HIT) )
然后向PC机环境一样给object3d对象注册MouseEvent3D事件,同样会在ipad上得到响应,调试通过。
具体解决方案见这个网址:
https://github.com/away3d/away3d-core-fp11/issues/229