0

我正在与这些国家建立一个地球。我已经构建了所有球体,一切正常。问题是为了让地球看起来正确,我不得不把所有的movieclip放到一个大的moveclip中,然后从那里分解。问题是我无法让 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);

这个问题有解决方案吗?

4

1 回答 1

1

如果我了解 Flash 中的 3d 引擎通常如何工作,这是不可能的。他们从原始影片剪辑创建纹理,然后对其进行转换。所以没有可以点击的电影剪辑。

我认为有几种方法可以解决这个问题。您可以将点击位置转换为极坐标(我不确定那里的数学,但谷歌应该会有所帮助),并找出以这种方式点击了哪个位置。

或者,您可以(可能)拥有第二个不可见的球体(在舞台外或未作为孩子添加,不确定哪个会起作用),您可以在其中创建不同的纹理,每个国家都有不同的颜色。您可以将其旋转到与可见球体相同的角度。然后,在单击时,将其渲染到 BitmapData 并检查您单击的点的像素值(翻译后可见球体和不可见球体上的点相同)。我认为这种方式是两者中比较容易的,并且会有更好的结果。

于 2011-10-05T06:45:29.980 回答