0

以下のコードを使用して回転立方体を作成し、立方体の側面としてビットマップを追加しました。ムービー クリップを立方体の側面として割り当てて、それらを操作できるようにすることはできないかと考えていました。

    import flash.events.Event;
    import flash.display.Bitmap;
    import flash.display.BitmapData;

    import org.papervision3d.cameras.CameraType;
    import org.papervision3d.materials.BitmapMaterial;
    import org.papervision3d.materials.ColorMaterial;
    import org.papervision3d.materials.WireframeMaterial;
    import org.papervision3d.materials.utils.MaterialsList;
    import org.papervision3d.objects.primitives.Cube;
    import org.papervision3d.view.BasicView;

            var cube : Cube;                    
            var basicview : BasicView = new BasicView(640, 480, true, false, CameraType.FREE); 
            addChild(basicview);
            var logo : Logo = new Logo( 0,0); //Bitmapdata (jpeg) exported as class Logo from library   
            var matFront : BitmapMaterial = new BitmapMaterial(logo);
            var matBack : BitmapMaterial = new BitmapMaterial(logo); 

            var ml : MaterialsList = new MaterialsList(); 

            ml.addMaterial(matFront, "front"); 
            ml.addMaterial(matBack, "back"); 
            ml.addMaterial(new ColorMaterial(0x551F92),"right"); 
            ml.addMaterial(new ColorMaterial(0x431872),"bottom"); 
            ml.addMaterial(new ColorMaterial(0x341359),"top"); 
            ml.addMaterial(new ColorMaterial(0x7429C7),"left"); 

            cube = new Cube(ml,200,200,200,5,5,5); 

            basicview.scene.addChild(cube); 
            basicview.camera.fov = 20;          

            addEventListener(Event.ENTER_FRAME, enterFrame);                
            function enterFrame(e:Event) : void
            {
                cube.yaw((320-mouseX)*0.01); 
                cube.pitch((240-mouseY)*0.01); 
            }
            basicview.singleRender(); 
        }

アップデート

これを追加します

var matFront : MovieMaterial = new MovieMaterial(new MV(),false,true);
matFront.interactive = true ;

MVこのコードではただの正方形です

package Scripts {

    import flash.display.MovieClip;
    import flash.events.*;

    public class MV extends MovieClip
    {
        public function MV( ) 
        {
            buttonMode = true;
            addEventListener(MouseEvent.CLICK,traceFunction);
        }
        private function traceFunction(ev:MouseEvent) {
            trace("clicked");
        }
    }
}

ムービー クリップのある側をクリックしても何も反応しないのはなぜですか?

更新 2

わかりました、この行を追加する必要がありました

basicview.viewport.interactive = true;

しかし、ムービークリップの側面が表示されていない場合でも、なぜインタラクションがあるのですか?

どうすれば回避できますか?

4

1 に答える 1

1

はい、可能です。使用するMovieClipsからマテリアルを作成する必要があります。これを行うには、 papervision3dマテリアルパッケージ内のMovieMaterialクラスとMovieAssetMaterialクラスを確認します。

于 2012-04-06T19:45:56.247 に答える