我正在与各国建立一个地球仪。我已经建立了所有的球体,一切正常。问题是让全球看起来正确我必须将所有的动画片段放入一个大的动作片段然后从那里分解。问题是我无法让Away3D识别出二级动画片段。如果我将侦听器应用于整个球体,它可以正常工作(但这不起作用)。有没有办法在away3d中使用嵌套的动画片段?
//what works
var materialMovie:MovieClip = new causticsMovie() as MovieClip;
var causticsMaterial:MovieMaterial = new MovieMaterial( materialMovie);
var sphere:Sphere = new Sphere({material:causticsMaterial, radius:300,segmentsH:18,segmentsW:26, interactive:true});
causticsMaterial.interactive = true;
view.scene.addChild(sphere);
sphere.addEventListener(MouseEvent3D.MOUSE_DOWN, NA);
//what doesn't
world_map.northAfrica_mc.addEventListener(MouseEvent3D.MOUSE_DOWN, NA);
这个问题有解决方法吗?
答案 0 :(得分:1)
如果我理解闪存中的3d引擎通常如何工作,这是不可能的。他们从原始的动画片段中创建一个纹理然后进行转换。所以没有可以点击的影片剪辑。
我认为有几种方法。您可以将点击位置转换为极坐标(我不确定那里的数学,但谷歌应该会有所帮助),并找出以这种方式点击的位置。
或者,您可能(可能)有一个第二个不可见的球体(在舞台上或不作为孩子添加,不确定哪个会起作用),在这里您可以创建不同的纹理,其中每个国家/地区都有不同的颜色。您可以将其旋转到与可见球体相同的角度。然后,单击时,将其渲染为BitmapData并检查您单击的点的像素值(已翻译,以便可见球体上的点和不可见球体相同)。我认为这种方式更容易,并且会有更好的结果。