Форум 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=215827)

Appleman 05.06.2024 17:14

локальные центры объектов
 
Всем привет!

Вопрос по центровке экранных объектов. Наверняка уже многократно решён.
Как известно, локальный центр изначально находится в углу (правом-нижнем, по-моему, не суть).
В подавляющем большинстве случаев требуется его установка строго по центру.

Внутри объекта-наследника Sprite пишу:
Код AS3:

        this.x = - this.width / 2;
        this.y = - this.height / 2;

Слетит ли такая центровка, если потом я буду указывать x и y из объекта-родителя?
И как в принципе решается подобная проблематика?

artem2033 02.07.2024 16:37

Привет, можешь просто расширить функционал обычного спрайта вот так:
Код AS3:

public class MySprite extends Sprite
        {
                private var _pivotX:Number;
                private var _pivotY:Number;
                private var _x:Number;
                private var _y:Number;
 
                public function MySprite()
                {
                        _x = 0;
                        _y = 0;
                        _pivotX = 0.5;
                        _pivotY = 0.5;
                }
 
                public function get pivotX():Number
                {
                        return _pivotX;
                }
 
                public function set pivotX(value:Number):void
                {
                        _pivotX = value;
                        super.x = _x - width * _pivotX;
                }
 
                public function get pivotY():Number
                {
                        return _pivotY;
                }
 
                public function set pivotY(value:Number):void
                {
                        _pivotY = value;
                        super.y = _y - height * _pivotY;
                }
 
                override public function get x():Number
                {
                        return _x;
                }
 
                override public function set x(value:Number):void
                {
                        _x = value;
                        super.x = _x - width * _pivotX;
                }
 
                override public function get y():Number
                {
                        return _y;
                }
 
                override public function set y(value:Number):void
                {
                        _y = value;
                        super.y = _y - height * _pivotY;
                }
 
                override public function set width(value:Number):void
                {
                        super.x = _x - value * _pivotX;
                        super.width = value;
                }
 
                override public function set height(value:Number):void
                {
                        super.y = _y - value * _pivotY;
                        super.height = value;
                }
        }


Appleman 19.07.2024 13:19

Благодарю. Примерно чего-то такое и предполагал, но самому делать неохота было :)


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

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