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

mike711 08.10.2009 18:17

Одинаковые свойства — как объединить?
 
В части кода некоторым текстфилдам присвоены одинаковые свойства — можно ли их объединить, чтобы не повторять в каждом?

Код AS3:

with(f_author){
        background=true;
        borderColor=0xcccccc;
        restrict="А-Яа-я ";
}
 
with(f_book){
        background=true;
        borderColor=0xcccccc;
        restrict="A-Za-zА-Яа-я0-9 .,!?-—\"\"\u00ab\u00bb";
}
 
f_in_series.selected = false;
 
with(f_series_name){
        visible=false;
        background=true;
        borderColor=0xcccccc;
        restrict="A-Za-zА-Яа-я0-9 .,\"";
}
 
with(f_series_q){
        visible=false;
        background=true;
        borderColor=0xcccccc;
        restrict="0-9";
}

Собсно, background=true; и borderColor=0xcccccc; повторяются везде.

Gaen 08.10.2009 19:18

При таком количестве я бы не стал запариваться. Если полей штук 10, можно загнать их в массив и в цикле назначить нужные значения. Ну и брутальный вариант, если значений много, и не все одинаковые, но более-менее подчиняются логике - сделать дочерний класс, перекрыть дефолтные значения нужными и добавить немного логики там, где значения не совсем одинаковые, но зависят от вполне понятных факторов.

mike711 08.10.2009 20:13

Честно говоря, я надеялся, что существует такая штука, типа
Код AS3:

with(f_author,f_book,f_series_name,f_series_q){

:)

Партизан 08.10.2009 20:30

Код AS3:

props(f_series_name,true,"0-9");
 
function props(obj,visible,restrict,background=true,borderColor=0xcccccc){
obj.visible=visible;
obj.restrict = restrict;
obj.background = background;
obj.borderColor = borderColor;
}


mike711 10.10.2009 01:47

Спасибо :)
Это решение и имел ввиду Gaiker, когда говорил про классы?
И ещё, объясните пожалуйста, зачем упоминать obj.background = background;
obj.borderColor = borderColor; если они уже декларированы в самой ф-ции?

Gaen 10.10.2009 01:58

Нет, это ближе к тому, что я говорил про массив :)

background - имя параметра, который передан в функцию, фактически локальная переменная, которая ни с чем не связана и существует только во время исполнения функции.
obj.background - свойство объекта obj. Единственная связь между ним и переменной background - одинаковые названия. А так это две абсолютно разные переменные.

mike711 10.10.2009 02:15

брр, т.е. грубо говоря, после выполнения ф-ции background удаляется, а присвоенный им obj.background'y "true" остаётся?

Felicast 10.10.2009 15:34

грубо говоря, ага

mike711 13.10.2009 03:09

а нельзя просто при рендере флешки присвоить всем ТекстФилдам.Инпут свойство бордера true ?

PgeorgyV 13.10.2009 10:25

ммм, если правильно понял, создайте свой класс, унаследуйтесь от TextField, в классе измените всё свойства, которые Вы хотели видеть бы по умолчанию измененными при создании экземпляра, а если не правильно, то делайте с помощью массива(вектора для 10), опять же такой массив можно создать в наследованном классе как static и описать метод для перебора массива по определенной закономерности


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

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