1

我在获取从库中的 MovieClip 创建的交互式动画平面以显示任何类型的动画或接收任何鼠标事件时遇到了一些麻烦。

具体来说,我遇到了 MovieClip 中 Button 实例的不同状态的问题。

这是我正在测试的基本代码:

    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);
    }
4

2 回答 2

0

我刚刚试过你的代码

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 版本?在这台机器上,我有一个较旧的 Papervision3D Public Beta 2.0 - Great White (20.08.25)

这是我使用的flaas文件。

于 2009-08-25T18:50:05.047 回答
0

使用补丁更新 VirtualMouse 类以处理 SimpleButton

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

于 2009-08-27T18:40:34.110 回答