【问题标题】:Add a movieclip on a 3d cube and have interaction with it在 3d 立方体上添加影片剪辑并与之交互
【发布时间】:2012-04-20 07:16:39
【问题描述】:

我使用以下代码创建了一个旋转立方体,并将位图添加为立方体的侧面。 我想知道是否可以将影片剪辑分配为立方体的侧面,以便我可以与它们进行一些交互。

    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;

但是为什么即使在影片剪辑的一侧不可见时我也有交互。

如何避免?

【问题讨论】:

  • 我相信 Papervision 不再处于开发或维护阶段。除了来自 Away3D 等库的 Stage3D 提供的 GPU 硬件渲染性能之外,您可能会因为当前的 3D 引擎而受到更多关注。

标签: actionscript-3 cube flash-cs4 papervision3d


【解决方案1】:

是的,这是可能的,您必须从要使用的 MovieClips 创建材质,为此请查看 papervision3d materials Package 中的 MovieMaterialMovieAssetMaterial 类。

【讨论】:

  • 好的,放置一个 MovieMaterial 很容易,我怎样才能与它进行一些交互?你能帮我解决这个问题吗?
  • 看看papervision.org网页上的这个教程,我想它可能对你有帮助:papervision2.com/advanced-interactivity
  • 感谢它对我的帮助很大。我还有一件事要做。
猜你喜欢
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多