Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Чудеса с наследованием DOC (http://www.flasher.ru/forum/showthread.php?t=215799)

Appleman 13.07.2021 19:33

Чудеса с наследованием DOC
 
Всем привет. Выручайте! Столкнулся с проблемой, выходящей за пределы моего понимания.

Имею объект шкалы Bar extends Sprite, в нём есть метод resize():

Код AS3:

                public function resize (width: uint, heigth: uint) : void
                // Перерисовывает шкалу с новыми размерами
                {
                        _width = width;
                        _heigth = heigth;
 
                        redrawEmpty ();
                        update (_value);
                }

методы redrawEmpty и update - приватные. Они с использованием graphics перерисовывают пустую шкалу с нужной шириной и высотой, а метод update дорисовывает шкалу "заполненной" до нужного уровня.

Создаю новый класс BarWithMarkers extends Bar. Это то же самое, но на саму шкалу наносятся маркеры, обозначающие некие важные с т.з. геймдизайна уровни отображаемого свойства. При изменении размеров шкалы положение маркеров корректируется, поэтому пишу:

Код AS3:

                override public function resize (width: uint, heigth: uint) : void
                {
                        super.resize (width, heigth);
                        redrawMarkers ();
                }

Не поверите, но после добавления такой конструкции шкала просто перестаёт отображаться на экране. Я даже для эксперимента оставил в методе только super.resize (width, heigth), всё равно пропадает. Интересно, что сам объект на сцене явно есть, по крайней мере при наведении мышью всплывают тултипы.

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

Попробовал создать в супере protected function resizeChildren(), запускаемый в самом конце метода resize(), и переопределить в наследнике - всё работает и отображается.

Я в тупике! Если кто понимает логику такого поведения, прошу помочь и объяснить. Спасибо.

udaaff 13.07.2021 22:08

Синтаксически, вроде, всё верно. Может width и height некорректные передаются в переопределенный метод?

Wolsh 14.07.2021 04:19

Попробуй переименовать параметры функции в newWidth:uint и newHeight:uint ))

Appleman 14.07.2021 22:20

Цитата:

Сообщение от Wolsh (Сообщение 1206938)
Попробуй переименовать параметры функции в newWidth:uint и newHeight:uint ))

В точку! Спасибо, мой рассудок спасён :)


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

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