0

Papervision3DのScrollPaneコンポーネントで大きな問題が発生しています。この問題はいくつかの異なるフォーラムで提起されましたが、解決されていません。

ScrollPaneを動的に作成し、ステージにドラッグしてみましたが、PaperVision3D環境でMovieClipに追加すると、常にデフォルトのサイズ(100、100)で表示されます。トゥイーンをそのサイズで動作させることすらできません。

4

1 に答える 1

1

わかりました、ここに行きます。

私はそれをMovieAssetMaterialで動作させようとしましたが、運がありません。MovieAssetMaterial内のステージをトレースすると、ステージがnullになり、スクロールペインが正しく動作しないのはそのためだと思います。これはコンテナであるため、適切にセットアップするためのステージが必要です。

ペーパービジョン平面上にスクロールペイン200x200を取得し、いくつかの回避策を使用してインタラクティブにすることができました。これが私のコードです:

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にはステージが必要なので、ステージに追加してサイズを設定しました。ScrollPaneを使用してMovieMaterialを作成し、そのインタラクティブ機能をtrueに設定しました。ステージから外してコンポーネントを「隠し」ました。表示をfalseに設定すると、100x100の問題に戻りました。

ペーパービジョンで動作していたUIコンポーネントを思い出したので、少しググってみました。そしてそれは本当です、彼らは以前働いていました。これが私が覚えている投稿です。ブリッツエージェンシーもしばらく前に同様のポストを持っています。InteractiveMovieMaterial.asをグーグルで検索できますが、drawFace3Dメソッドがなくなったため、現在のペーパービジョンバージョンでは機能しません。状況が少し変わりました。修正を行った後、この問題に関する新しい(2008)ブログ投稿をJohnGrdenのWebサイトで見つけました。アプローチには類似点がありますが、私はまだそのような問題をすべて経験していません。

お役に立てれば!

于 2009-09-01T21:05:10.190 に答える