2012-04-06 3 views
0

아래 코드를 사용하여 회전 큐브를 만들고 큐브의 측면으로 비트 맵을 추가했습니다. 영화 클립을 입방체의면으로 할당 할 수 있을지 궁금해서 큐브와 상호 작용할 수있게되었습니다. UPDATE3D 큐브에 동영상 클립 추가 및 상호 작용

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; 

를 추가했다하지만 상호 작용을 왜 동영상 클립의 측면을 볼 수없는 경우에도 를 찾을 수 있습니다.

어떻게 피할 수 있습니까?

+1

필자는 Papervision이 더 이상 개발되거나 유지 관리되지 않는다고 생각합니다. Away3D와 같은 라이브러리에서 Stage3D가 제공하는 GPU 하드웨어 렌더링 성능 외에도 현재 3D 엔진에 대한 관심이 더 커질 수 있습니다. –

답변

1

예, 사용하고자하는 MovieClips에서 Materials를 작성해야만합니다. papervision3d materials Package 안에있는 MovieMaterialMovieAssetMaterial 클래스를 살펴보아야합니다.

+0

좋아, MovieMaterial을 배치하기가 쉽다. 어떻게 상호 작용할 수 있을까? 그걸 도와 줄 수있어? –

+1

이 자습서를 papervision.org 웹 페이지에서 살펴보면 다음과 같이 도움이 될 것이라고 생각합니다. http://papervision2.com/advanced-interactivity/ – danii

+0

감사합니다. 덕분에 많은 도움이되었습니다. 한 가지 더 있습니다. 쪽으로. –