マウスクリック後の実行時に、ロードされた3dsオブジェクト/メッシュのマテリアルを変更する方法を理解しようとしています。(Away3D 3.5 / 3.6)
3dsオブジェクトはLoader3Dでロードされます:
//global mesh variable and view3d
var my_mesh:Mesh;
var view:View3D = new View3D();
//creating a parser with initial material
var max3ds_parser:Max3DS = new Max3DS();
max3ds_parser.material = new WireColorMaterial(0xFF0000);
var loader:Loader3D = new Loader3D();
loader.addEventListener(Loader3DEvent.ON_SUCCESS, onSuccess);
loader.loadGeometry("myMesh.3ds", max3ds_parser);
addChild(view);
addEventListener(Event.ENTER_FRAME, onEnterFrameRenderScene);
function onSuccess(e:Loader3DEvent):void{
my_mesh = Mesh(e.loader.handle);
view.scene.addChild(my_mesh)
}
function onEnterFrameRenderScene(e:Event):void{
my_mesh.rotationY += 15;
view.render();
}
したがって、このすべての後に、パーサーオブジェクトで適用された初期マテリアル(WireColorMaterial)を使用して3dsオブジェクトがシーンに追加されます。しかし、マウスクリック後に最初のマテリアルを変更したいので、次のようにします。
stage.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void{
//start FAIL here:
my_mesh.material = new WireframeMaterial(0x000000);
//end FAIL
trace("clicked!");
trace(my_mesh.material)
}
マウスをクリックすると、ビューで何も変更されません。my_meshは、最初のマテリアルをオンにしたときと同じように回転します。しかし、微量材料は、新しい材料が実際に適用されたことを示しています。
これを行う他の方法はありますか、それとも新しい素材を使用するようにシーンを更新する何らかの方法がありますか?または、ビューを更新しますか?または、どういうわけかmy_meshをもう一度解析する必要がありますか?乾杯。