Форум 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)
-   -   Неприменяются свойства к подгружаемому TextFeild (http://www.flasher.ru/forum/showthread.php?t=104945)

<Maugli> 05.12.2007 00:35

Вложений: 1
Рисую мувик, все работает, даже складывается впечатление, что AS не так уж и сложно... но начинаю подгружать текст из *.txt, он грузится, а вот применить к нему какие-нибудь настройки (КРОМЕ ВИЗИБЛА) не получается, не работает ни АЛЬФА, ни размер шрифта, ни межстрочный интервал (вроде ставлю и альфу и текстформат после загрузки текста, как по правилам).... может кто ошибку в коде найдет? Или есть другие объяснения... Заранее спасибо всем ответившим!!!

Код:



//создаю текстовое поле centralTX
_root.createTextField("centralTX",
                  this.getNextHighestDepth(), 0, 0, 500, 300);
_root.centralTX.multiline = true;
_root.centralTX.wordWrap = true;

 //прячу на время
_root.centralTX._visible = false;

//ловлю действие мыши
 _root.button.onRelease = function()
{ 

// .....код анимации.....

//загружаю текст
var loadtxt:LoadVars = new LoadVars();
        loadtxt.load("clubText.txt");
        loadtxt.onData = function(txt:String)
    {
          _root.centralTX.text = txt;
        delete loadtxt;
        }
                       
//Загруженное поле делаю видимым плавно
        _root.centralTX._visible = true;
        _root.centralTX._alpha = 0;
                _root.centralTX.onEnterFrame = function()
        {
                centralTX._alpha < 100 ?
                      centralTX._alpha += 2 : centralTX._alpha = 100;
        }
//применяю форматирование
        var formTX:TextFormat = new TextFormat();
        formTX.size = 15;
        formTX.leading = 10;
        centralTX.setTextFormat (formTX);
}

вот исходник на всякий пожарный

iNils 05.12.2007 03:21

1. Альфа не работает потому, что должен быть вшит в ролик шрифт и у текстового поля должно стоять embed=true
2. Нарушена последовательность действий. Либо вы назначаете стиль до установки текста, тогда надо использовать setNewTextFormat, либо после и использовать ваш setTextFormat, но вся работа со стилем должна быть внутри события загрузки.
3. Вы уверены, что вам нужно использовать onData, а не onLoad?

wvxvw 05.12.2007 03:34

Ко всему вышесказанному добавлю, что TextField не подписан на onEnterFrame, так что все изменения описанные в этой ф-ции происходить не будут.

<Maugli> 05.12.2007 21:25

to iNils:
1. спасибо, про embed не знал....
2. помогло, работает
3. Я плохо представляю себе отличия, поэтому неуверен, просто с onData работает :) мне нужен текст который появляется на время и который можно выгрузить и загрузить на его же место (в тот же TextField) другой текст, из другого файла, для этих целий какой метод правильней использовать?

to wvxvw:

А не подскажете как подписать TextField на onEnterFrame? Это надо делать при создании Поля или при загрузке в поле текста? И кого вида синтаксис?

wvxvw 06.12.2007 00:00

onEnterFrame - событие клипов, незачем его присваивать текстовым полям =)
чтобы создать програмную анимацию можно (проще) описать ее в onEnterFrame какого-нибудь клипа / в setInterval + updateAfterEvent.
Чуть сложнее (но, зато + в управлении анимацией) - с помощью класа mx.transitions.Tween

<Maugli> 06.12.2007 10:24

to wvxvw да, но Вы выше писали, что если текстфилд не подписан на onEnterFrame, то изменения текста происходить не будут, а теперь пишете, что ТекстФилд не подписывается на onEnterFrame...... Не могли бы Вы поподробнее написать, что Вы имели ввиду? (В мувике я пользуюсь onEnterFrame при анимации назад и плавном изменении альфы...)

wvxvw 06.12.2007 10:38

onEnterFrame - это событие, которое возникает 1 раз в кадр =) Клип его "слышит" и выполняет то, что описано в функции с таким же названием. Текстовое поле по умолчанию это событие не слушает. Его можно на него подписать, но делать этого не стоит. Т.е. чтобы происходили какие-то изменения с текстом нужно описать в функции эти изменения и периодически вызывать эту функцию. onEnterFrame в этом случае удобен тем, что не нужно заботится о синхронном обновлении экрана + работает точнее, чем setInterval.
В этом же и заключается суть класса mx.transitions.Tween - создается клип, и в его onEnterFrame происходят изменения с обьектом, который нужно анимировать.

<Maugli> 06.12.2007 20:42

Спасибо огромное, теперь все гораздо понятнее!!! Буду пробовать...

<Maugli> 07.12.2007 12:48

Осталась проблема только в Альфе!
Делаю так: в библиотеке новый шрифт (выбираю Courier New) -> экспорт в AS (название Cur) -> пишу код(добавленное жирное):
Код:

//создаю текстовое поле centralTX
_root.createTextField("centralTX",
                  this.getNextHighestDepth(), 0, 0, 500, 300);
_root.centralTX.multiline = true;
_root.centralTX.wordWrap = true;
_root.centralTX.embedFont = true

 //прячу на время
_root.centralTX._visible = false;

//ловлю действие мыши
 _root.button.onRelease = function()
{ 

// .....код анимации.....

//загружаю текст
var loadtxt:LoadVars = new LoadVars();
        loadtxt.load("clubText.txt");
        loadtxt.onData = function(txt:String)
    {
          _root.centralTX.text = txt;
        delete loadtxt;
//применяю форматирование
        var formTX:TextFormat = new TextFormat();
        formTX.size = 15;
        formTX.leading = 10;
        centralTX.setTextFormat (formTX);

        }
                       
//Загруженное поле делаю видимым плавно
        _root.centralTX._visible = true;
        _root.centralTX._alpha = 0;
                _root.centralTX.onEnterFrame = function()
        {
                centralTX._alpha < 100 ?
                      centralTX._alpha += 2 : centralTX._alpha = 100;
        }
}

и в итоге текст не появляется вообще... подозрение в том, что я как-то неправильно вшиваю шрифт... укажите пожалуйста на ошибку...

wvxvw 07.12.2007 13:45

Код:

_root.centralTX.onEnterFrame = function()
ну нету у TextField события onEnterFrame! Просто для эксперимента, убери выделенный текст из своего кода. Это не самый хороший способ - делать какие-то операции с _root'ом, но как для примера - покатит.


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

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