Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Меняются ли координаты (c X на Y или наоборот) (http://www.flasher.ru/forum/showthread.php?t=167037)

Parez 07.09.2011 18:58

Меняются ли координаты (c X на Y или наоборот)
 
Такой вопрос:
Меняются ли координаты дочерних элементов (c X на Y или наоборот) при вращении контейнера на 90n градусов?
То есть, например, если после поворота контейнера на 90 градусов пытаться менять координаты X его дочерних элементов, то будет меняться реальная координата X или Y?
Или система координат внутри контейнера остаётся неизменной?

КорДум 07.09.2011 19:00

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

Genzo 07.09.2011 19:01

Фактически координата объекта - это координата его точки трансформации .

Parez 07.09.2011 19:08

Ну, вообщем, я так и думал. Просто у меня, когда я делал свой ScrollPane с возможностью как вертикальной, так и горизонтальной прокрутки контента, возникла какая-то путаница.. Спасибо.

bav 07.09.2011 19:10

Код AS3:

package 
{
    import flash.display.*;
    import flash.events.*;
 
    public class TestProject extends Sprite
    {
        private var n:int = 0;
        private var cont:Sprite;
 
        public function TestProject()
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
 
        private function init(event:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
 
            cont = new Sprite();
            cont.x = stage.stageWidth / 2;
            cont.y = stage.stageHeight / 2;
            addChild(cont);
 
            var s:Sprite = new Sprite();
            s.graphics.beginFill(0);
            s.graphics.drawCircle(0, 0, 10);
            s.addEventListener(Event.ENTER_FRAME, moveCircle);
            cont.addChild(s);
 
            stage.addEventListener(MouseEvent.MOUSE_DOWN, clickHandler);
            stage.addEventListener(MouseEvent.MOUSE_UP, clickHandler);
        }
 
        private function moveCircle(event:Event):void
        {
            n += 10;
            event.target.x = Math.sin(n * (Math.PI / 180)) * 100;
        }
 
        private function clickHandler(event:MouseEvent):void
        {
            cont.rotation = (event.type == MouseEvent.MOUSE_DOWN) ? 90 : 0;
        }
    }
}

Как видим, визуально координаты меняются. Но лучше думать об этом как о повороте контейнера.

Parez 07.09.2011 19:20

Ну, это понятно. Я как раз почему-то решил, что визуально координаты остаются такими же, а в реале меняются. Щас уже сам проверил.


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

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