Форум Flasher.ru

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

Akopalipsis 18.07.2013 00:03

переопределение классов override
 
До сего дня не когда не пользовался переопределением классов ( не считая event ), а создавал класс и в нем уже собирал нужные свойства от нужного класса и так далее. Но сегодня решил попробовать и сразу конфуз,
то ли я не так понимаю, то ли не так, что то делаю. Выручайте.
Нужно применить TextFormat с к нескольким полям и я решил расширить его и в нем написал: ниже.
Затем я переопределил свойство setTextFormat и создал сам экземпляр класса TextView и присвоил его свойству text текст.
У меня была надежда, что у меня текст будет белого цвета. Но нет. В чем моя ошибка?
Код AS3:

package 
{
        import flash.text.TextFormat;
 
        /**
        * ...
        * @author
        */

        public class FormatView extends TextFormat
        {
 
                public function FormatView()
                {
                        super();
                }
                override public function get color():Object
                {
                        return super.color;
                }
 
                override public function set color(value:Object):void
                {
                        value = 0xffffff;
                        super.color = value;
                }
 
        }
 
}

Код AS3:

package  
{
        import flash.text.TextField;
        import my_path.FormatView;
 
        /**
        * ...
        * @author
        */

        public class TextView extends TextField
        {
 
                public function TextView()
                {
                        super();
 
                }
                override public function setTextFormat(format:FormatView, beginIndex:int = -1, endIndex:int = -1):void
                {
                        super.setTextFormat(format, beginIndex, endIndex);
                }
 
        }
 
}


maincode 18.07.2013 00:15

Покажите полный код, что вы делаете в основном классе? В классе FormatView вы переопределили метод set, если вы извне не вызвали метод format.color = xxx, то цвет не станет белым. А вообще, вам бы почитать литературу про ООП.

Akopalipsis 18.07.2013 00:19

maincode то есть мой вариант "некакой"?) Жаль...Смысл тогда полностью отпадает...

maincode 18.07.2013 00:22

Зачем переопределять класс если вам нужно только цвет изменить? создайте экземпляр TextFormat и задайте ему значение .color=0xffffff. Какую задачу пытаетесь решить? дайте больше информации :)

Akopalipsis 18.07.2013 00:37

Основная Задача - нескольким текстовым полям, задать определённый стиль ( очень много из TextFormat )
Второстепенная Задача - научится переопределять.
На счёт "смысла" я немного не подумал, разницы особой нет. В место класса TextView можно просто TextField создавать, у которого появится свойство setTextFormat и применять его ко всем экземплярам, но упрощения, которого я пытался добиться ( не писать много раз setTextFormat, вручную или циклом ) нет. А ещё mouseEnabled к каждому полю писать...

Wolsh 18.07.2013 00:54

Что-то я не понял — это что, компилится?
Компилятор не может позволить ТАК оверрайдить метод. При оверрайде сигнатура метода не может быть изменена. Новый setTextFormat никак не может принимать Ваш кастомный FormatView.

Akopalipsis 18.07.2013 01:06

Цитата:

Что-то я не понял — это что, компилится?
Нет) А мысль о применения TextFormat на сам класс FormatView, тоже фантастическая?)
в конструкторе:
Код AS3:

var tf:TextFormat = new TextFormat();
tf.color = 0xffffff;
this.setTextFormat(tf);

Добавлено через 25 минут
Спасибо! разобрался.

namespaces 18.07.2013 20:24

При переопределении как и в Interface - сигнатура метода должна быть идентична в соответствующих методах класса.


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

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