首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ScrollPane in Papervision3D

ScrollPane in Papervision3D
EN

Stack Overflow用户
提问于 2009-09-01 16:54:49
回答 1查看 779关注 0票数 0

我对Papervision3D中的一个Papervision3D组件有很大的问题。这一问题已在几个不同的论坛上提出,但没有得到解决:

  • Osflg.org/2009-3月/029503.html
  • http://www.nabble.com/ScrollPane-doesn%27t-size-or-display-properly-td22302394.html

我尝试动态创建一个ScrollPane,并将一个拖到舞台上,当添加到PaperVision3D环境中的MovieClip时,它总是以其默认大小(100,100)出现。我甚至找不到一个吐温人来研究它的尺寸。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-01 21:05:10

好的,给你。

我试着让它和一个MovieAssetMaterial一起工作,没有运气。如果我在MovieAssetMaterial中跟踪这个阶段,这个阶段是空的,我猜这就是为什么滚动窗格不能正常运行的原因。它是一个容器,因此它需要舞台来正确地设置自己。

我已经设法得到一个滚动窗格200x200在纸视觉平面和互动与一些解决办法。这是我的密码:

代码语言:javascript
复制
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);
        }
    }
}

还有解释:我试过使用BasicView,但是无法获得相同的结果,所以我使用了老式的方法来创建场景、摄像机、渲染和视点。因为ScrollPane需要舞台,所以我把它添加到舞台上,然后设置它的大小。我使用MovieMaterial创建了一个ScrollPane,并将其交互性设置为true。我已经“隐藏”了这个部件,把它放下舞台。设置为false使我回到100x100问题。

我有一点谷歌,因为我记得UI组件过去与纸视觉工作。这是事实,他们使用使用工作。这里是我记得的那篇文章。突击局之前也有类似的帖子。你可以找到InteractiveMovieMaterial.as,如果你谷歌它,但它不工作与当前的纸质版本,因为没有drawFace3D的方法,事情发生了一些变化。在我做了修复之后,我找到了一个关于这个问题的更新的(2008) 约翰·格拉登网站上的博客文章。这种方法有相似之处,但我还没有经历过所有的麻烦。

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1363543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档