Возникли проблемы с интерактивной плоскостью - PullRequest
1 голос
/ 25 августа 2009

У меня возникли проблемы с получением интерактивной анимированной плоскости, созданной из мувиклипа в библиотеке, для отображения анимации любого типа или получения событий мыши.

В частности, у меня проблемы с различными состояниями экземпляров Button в MovieClip.

Вот основной код, с которым я тестирую:

    private function init3D():void
    {
        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();

        stage.addEventListener(Event.ENTER_FRAME, loop);
    }

    public function addChild3D(link:String):Plane
    {
        //var demoPlane:DemoPlane = new DemoPlane(link);
        //return scene.addChild(demoPlane.getPlane());

        var material:MovieAssetMaterial = new MovieAssetMaterial(link, false, true, false, false);
        material.interactive = true;
        //material.smooth = true;
        material.animated = true;

        var plane_mc:Plane = new Plane(material, 0, 0, 10, 10);
        scene.addChild(plane_mc);

    }

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

Ответы [ 2 ]

0 голосов
/ 27 августа 2009

Обновление класса VirtualMouse с патчем для обработки SimpleButton

http://code.google.com/p/papervision3d/issues/detail?id=169

0 голосов
/ 25 августа 2009

Я только что попробовал вам код

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.*;

    public class PV3DPlane extends MovieClip{

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

        public function PV3DPlane(){
            init3D();
        }

        private function init3D():void
        {
                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();


                plane = addChild3D('asset');

                stage.addEventListener(Event.ENTER_FRAME, loop);
        }

        public function addChild3D(link:String):Plane
        {
                var material:MovieAssetMaterial = new MovieAssetMaterial(link, false, true, false, false);
                material.interactive = true;
                //material.smooth = true;
                material.animated = true;
                material.doubleSided = true;

                var plane_mc:Plane = new Plane(material, 0, 0, 10, 10);
                scene.addChild(plane_mc);
                return plane_mc;
        }

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

У меня отлично работает ... Я только что создал фиктивный клип с именем button и добавил:

button.addEventListener('click', function(){trace('click')});

Получаю трассировку, все отлично работает. Какую сборку papervision вы используете? На этой машине у меня есть более старая Publicvision3D Public Beta 2.0 - Великий Белый (20.08.25)

- это fla и как файл, который я использовал.

...