0

Papervision3D의 ScrollPane 구성 요소에 큰 문제가 있습니다. 이 문제는 다른 포럼의 몇에서 제기하지만 해결되지되었습니다Papervision3D의 ScrollPane

나는 동적으로의 ScrollPane을 만들뿐만 아니라 무대에 하나를 끌어 시도 PaperVision3D 환경의 MovieClip에 추가 될 때 항상 기본 크기 (100, 100)로 나타납니다. 나는 Tween에게 그것의 크기로 작업하게 할조차 수 없습니다.

답변

1

좋아, 여기 있습니다.

저는 MovieAssetMaterial에서 작동하도록 노력했습니다. 운이 없습니다. MovieAssetMaterial 내부에서 무대를 추적하면 무대가 null이며 스크롤바가 제대로 작동하지 않는 이유가 무엇인지 추측하고 있습니다. 컨테이너이기 때문에 제대로 설정해야합니다.

필자는 papervision 비행기에서 스크롤 창 200x200을 얻을 수 있었고 몇 가지 대안을 통해 대화식을 얻을 수있었습니다. 내가 BasicView를 사용하여 시도했다 ,하지만 난 장면, 카메라, 렌더링 뷰포트를 만드는 oldschool 방법을 사용 그래서 나는 같은 결과를 얻을 수 없습니다 :

package{ 

    import org.papervision3d.*; 
    import org.papervision3d.view.*; 
    import org.papervision3d.cameras.*; 
    import org.papervision3d.materials.*; 
    import org.papervision3d.objects.*; 
    import org.papervision3d.objects.primitives.*; 
    import org.papervision3d.scenes.*; 
    import org.papervision3d.render.*; 

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

    import fl.controls.*; 
    import fl.containers.*; 

    public class PV3DScrollPane extends MovieClip{ 

     private var viewport:Viewport3D; 
     private var camera:Camera3D; 
     private var scene:Scene3D; 
     private var renderer:BasicRenderEngine; 
     private var plane:Plane; 

     public function PV3DScrollPane(){ 
      init3D(); 
     } 

     private function init3D():void 
     {  
      //setup 3d 
      viewport = new Viewport3D(1024, 768, false, true); 
      addChild(viewport); 
      camera = new Camera3D(); 
      camera.z = -500; 
      camera.zoom = 1; 
      camera.focus = 500; 
      camera.target = DisplayObject3D.ZERO; 
      scene = new Scene3D(); 
      renderer = new BasicRenderEngine(); 
      //setup plane 
      plane = makePlane(); 
      stage.addEventListener(Event.ENTER_FRAME, loop); 
     } 

     public function makePlane():Plane 
     { 
      //setup scroll pane 
      var sp:ScrollPane = new ScrollPane(); 
      addChild(sp); 
      sp.x = 1000;//hide it off stage, visible doesn't help much 
      sp.source = 'http://www.helpexamples.com/flash/images/image1.jpg'; 
      sp.setSize(200, 200); 
      //setup material & plane 
      var mat:MovieMaterial = new MovieMaterial(sp, false, true, false); 
      mat.interactive = true; 
      var plane:Plane = new Plane(mat, 0, 0, 10, 10); 
      scene.addChild(plane); 
      return plane; 
     } 

     private function loop(evt:Event):void 
     { 
       //plane.rotationY++; 
       renderer.renderScene(scene, camera, viewport); 
     } 
    } 
} 

그리고 설명 : 여기에 내 코드입니다. ScrollPane에 스테이지가 필요하기 때문에 스테이지에 추가 한 다음 크기를 설정합니다. ScrollPane을 사용하여 MovieMaterial을 만들고 상호 작용을 true로 설정했습니다. 나는 무대 위에서 내려서 구성 요소를 숨겨 놨습니다. false로 설정하면 100x100 문제로 돌아 가게됩니다.

저는 페이퍼 비전 작업에 사용 된 UI 구성 요소를 기억하기 때문에 Google을 조금했습니다. 그리고 그것은 사실입니다. 을 사용하면을 사용할 수 있습니다. Here은 내가 기억하는 게시물입니다. Blitz Agency에도 비슷한 게시물이 있습니다. InteractiveMovieMaterial.as는 Google에서 찾을 수 있지만 더 이상 drawFace3D 메소드가 없기 때문에 현재 Papervision 버전에서는 작동하지 않습니다. 수정 한 후에이 문제점에 대한 최신 (2008) blog post on John Grden's website을 발견했습니다. 이 접근법에는 유사점이 있지만 아직 모든 문제를 해결하지 못했습니다.

희망이 도움이됩니다.

+0

감사합니다. John Grden의 게시물이 실제로 도움이되었습니다. –

+0

쿨! 다행 이군. 나는 일이 잘 안되고 네 잘못이 아닐 때가 싫다. :) –

관련 문제