MovieClip в перспективе - PullRequest
       32

MovieClip в перспективе

0 голосов
/ 01 июня 2011

Я хотел бы иметь мувиклип, который имеет немного глубины.Я не могу использовать вращение X, вращение Y или вращение Z, потому что мне нужно использовать Flash CS3.

Первое изображение - это то, что у меня сейчас есть, плоский видеоклип.Второе - это то, что я должен иметь.

enter image description here enter image description here

Я уже пытался использовать матрицу, но это не сработало.Я задал вопрос об этом, и там кто-то предложил, что я должен использовать 3D-движок, чтобы получить желаемый результат.

Поскольку это был MovieClip, который должен был быть в 3D, я теперь использовал MovieClipSprite.

var movieClipSprite:MovieClipSprite = new MovieClipSprite(myMC);
var view:View3D = new View3D({x:200,y:200});

var cam:Camera3D = new Camera3D();
cam.zoom = 1;
cam.y = 100;            
view.camera = cam;
cam.lookAt(new Number3D(0, 0, 0));

this.addChild(view);
view.scene.addSprite(movieClipSprite);
view.render();

Не важно, как я менял камеру, у меня всегда был один и тот же результат,Плоский мувиклип.

Затем я прочитал в документации Away3D

MovieClipSprite: спрайтовый объект сферического рекламного щита (всегда лицом к камере), который использует мувиклип в качестве своей текстуры.Рисует отдельные экранные объекты в строке с z-отсортированными треугольниками в сцене.

Я думаю, поэтому это всегда дает один и тот же результат.

Я также пробовал что-то с MovieMaterial, но я никогдау меня все получилось.

Не могли бы вы помочь мне представить мой видеоклип в перспективе?

Большое спасибо!

Винсент

1 Ответ

2 голосов
/ 08 июня 2011

Является ли "view.render" в функции enter_frame?

У меня это работало с flashdevelop & Away3d 4.0:

    public var aSprite:Plane = new Plane(new ColorMaterial(0xFF0000));
    public var cam:Camera3D = new Camera3D();
    public var view:View3D = new View3D(null,cam);

    public function test() 
    {
        this.addChild(view);

        var vec:Vector3D = new Vector3D();
        cam.y = -300;
        cam.lookAt(vec);

        view.scene.addChild(aSprite);
        this.addEventListener(Event.ENTER_FRAME, onFrame);
    }

    public function onFrame(e:Event):void
    {
        view.render();
    }
...