Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Правильно скопировать TextFormat1 в TextFormat2 (http://www.flasher.ru/forum/showthread.php?t=190677)

mj_nooker 27.12.2012 01:27

Правильно скопировать TextFormat1 в TextFormat2
 
Привет всем!

Признаюсь, не дочитал матчасть об объектах.
Надо клонировать несколько TextFormat'ов (а затем у каждого из них поменять всего одно свойство) из существующего TextFormat1 (у которого установлены некоторые свойства).

Если написать
Код AS1/AS2:

var TextFormat2:TextFormat = new TextFormat();
TextFormat2 = TextFormat1;

,то TextFormat2 начинает ссылаться на TextFormat1 - то есть если изменить, например, TextFormat2.color, то .color меняется у TextFormat1.
А мне надо именно независимые объекты.

Как?! :)

mooncar 27.12.2012 15:09

Метода клонирования у TextFormat нет. Создавайте новый.
Для оптимизации попробуйте циклом, например, так:

Код AS1/AS2:

var my_fmt:TextFormat = new TextFormat(); //исходный
my_fmt.bold = true ;
my_fmt.italic = true ;
my_fmt.color = 0xFFCC00;
 
for (i = 2; i <= 4; i++)
{
        this['my_fmt' + i]  = new TextFormat(); //создаем новые экземпляры my_fmt2, my_fmt3 и т.д.
 
        for (p in my_fmt)
        {
                this['my_fmt' + i][p] = my_fmt[p]; //копируем соответственные свойства от исходного
        }
}
 
//переназначаем нужные свойства
my_fmt2.color = 0xCCCCCC;
my_fmt3.italic = false ;
my_fmt4.bold = false ;
 
trace(my_fmt.bold); //проверяем - свойство bold исходного не изменилось
trace(my_fmt4.bold); //а свойство bold нового изменилось, можно использовать

Так можно сделать, поскольку почти все свойства TextFormat - примитивного типа, передаются при приравнивании не по ссылке, а по значению.

mj_nooker 28.12.2012 22:53

Спасибо!
Понял, метод принял на вооружение!


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

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