0

私は国と一緒に地球を作っています。私はすべての球体を構築しており、すべて正常に動作しています。問題は、地球儀が正しく見えるようにすることです。すべてのムービークリップを 1 つの大きなムーブクリップに入れ、そこから分解する必要がありました。問題は、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

フラッシュの3Dエンジンが一般的にどのように機能するかを理解していれば、これは不可能です。元のムービークリップからテクスチャを作成し、それを変換します。したがって、クリックするムービークリップは残っていません。

これを回避する方法はいくつかあると思います。クリック位置を極座標に変換して(そこでの計算についてはよくわかりませんが、グーグルが役立つはずです)、どの位置がそのようにクリックされたかを把握することができます。

または、(おそらく)2番目の目に見えない球体(ステージ外または子として追加されていない、どちらが機能するかわからない)を作成して、国ごとに異なる色の異なるテクスチャを作成することもできます。これを、表示されている球と同じ角度に回転させます。次に、クリックすると、それをBitmapDataにレンダリングし、クリックしたポイントのピクセル値を確認します(表示されている球と非表示の球のポイントが同じになるように変換されます)。この方法の方が簡単で、より良い結果が得られると思います。

于 2011-10-05T06:45:29.980 に答える