Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вращение вокруг своей оси (http://www.flasher.ru/forum/showthread.php?t=207302)

tihomir 07.04.2014 16:07

Вращение вокруг своей оси
 
Здравствуйте!

Понадобилось сделать вращение предмета вокруг своей оси (по оси У),
вроде бы просто, но при повороте объект растягивается (по оси Х) а потом обратно, вроде бы не сильно но всё равно смотрится не эстетично)
Что это такое и как с этим бороться?)
Код:
Код AS3:

import flash.display.MovieClip;
import flash.events.Event;
 
var speed = 1;
var test:MovieClip = new Test();
test.x = 50;
test.y = 50;
 
addChild(test);
 
test.addEventListener(Event.ENTER_FRAME, loop);
 
function loop(e:Event):void
{
 test.rotationY += speed;//Поворачиваем объект
}


caseyryan 07.04.2014 17:10

Видимо это перспектива...

Akopalipsis 07.04.2014 17:16

Цитата:

Видимо это перспектива...
Впервые услышав о таком вращении, решил посмотреть о чем говорит ТС и мне сразу кинулось в глаза,
что перспектива хоть и есть, но она почему-то только на левую сторону действует, правая сторона осталась обделенной. Вот может именно о этом ТС и спрашивает?

samana 07.04.2014 17:31

Цитата:

Сообщение от Akopalipsis (Сообщение 1163130)
мне сразу кинулось в глаза, что перспектива хоть и есть, но она почему-то только на левую сторону действует, правая сторона осталась обделенной.

А как вы это увидели, ведь ТС не предоставил исходников, а лишь только код?

Akopalipsis 07.04.2014 17:37

Вложений: 1
Цитата:

А как вы это увидели, ведь ТС не предоставил исходников, а лишь только код?
Цитата:

Впервые услышав о таком вращении, решил посмотреть о чем говорит ТС
Вот скрин, почему толька одна сторона под перспективу попадает?

samana 07.04.2014 17:46

Странный результат, не сталкивался с таким.

Rivexe 07.04.2014 18:02

Вложений: 2
Дело состоит в проекции. Центр проекции(точка схода) задан в центре рабочей области, поэтому при разных позициях объекта на экране, проекция тоже будет разная. Пронаблюдать это можно, если подвигать объект во время вращения:
Код AS3:

import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
 
var speed = 1;
var test:MovieClip = new Test();
test.x = 50;
test.y = 50;
 
addChild(test);
 
test.addEventListener(Event.ENTER_FRAME, loop);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
 
function loop(e:Event):void
{
        test.rotationY +=  speed;//Поворачиваем объект
}
 
function mouseMoveHandler(e:MouseEvent):void
{
        test.x = e.stageX;
        test.y = e.stageY;
}

test_1.swf   (1.1 Кб)


Однако точку схода можно менять:
Код AS1/AS2:

import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
 
var speed = 1;
var test:MovieClip = new Test();
test.x = 50;
test.y = 50;
 
addChild(test);
 
test.addEventListener(Event.ENTER_FRAME, loop);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
 
function loop(e:Event):void
{
        test.rotationY +=  speed;//Поворачиваем объект
}
 
function mouseMoveHandler(e:MouseEvent):void
{
        test.x = e.stageX;
        test.y = e.stageY;
 
        test.parent.transform.perspectiveProjection.projectionCenter = new Point(test.x, test.y);
}

test_2.swf   (1.2 Кб)

Akopalipsis 07.04.2014 18:07

Rivexe Спасибо за объяснение! И у меня ещё вопрос -
Вы эти примеры делали в адоби и точка регистрации находится в центре?

Rivexe 07.04.2014 18:12

Точка регистрации у объекта? Да в центре объекта.

tihomir 07.04.2014 20:15

Спасибо всем за объяснения, очень помогли


Часовой пояс GMT +4, время: 19:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.