Форум 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)
-   -   Использование TextFormat в классах (http://www.flasher.ru/forum/showthread.php?t=112709)

Korsar Nik 05.06.2008 20:18

Использование TextFormat в классах
 
Есть такой вот класс (урезанный). В нём я хочу создать текстовое поле, задать ему TextFormat, присвоить некую переменную и в каждом кадре отслеживать изменение этой переменной. Не получается в классе задавать TextFormat. Подозреваю, что надо импортировать некий встроенный класс для текста, чтобы получить возможность использовать все его свойства и методы (как, например, с мувиком).
Пробовал задавать формат в руте, а в классе на него ссылаться. В таком случае класс компилится, поля создаются, но TextFormat не работает.
Классы только начал осваивать, советы типа "Иди читай то-то и то-то" приветствуются :))

Код:

import mx.utils.Delegate;
class Zig_game.Interface {
        // Очки
        public var _score:Number = null;
        public var _scoreText = null;
        public var _iface:MovieClip;
        // Параметры текстовых полей для очков и континиусов
            var my_fmt:TextFormat = new TextFormat();
            my_fmt.color = 0xCBCBCB;
            my_fmt.size = 10;
            my_fmt.align = "center";
            my_fmt.font = "Trebuchet MS";
        // Конструктор
        function Interface() {
                _score = 0;
                // Создаем текстовые поля под континиусы и очки
                _scoreText = _root.createTextField("score_txt", 15006, 126, 11, 70, 15);
                _scoreText.setTextFormat(my_fmt);
                // Аттачим интерфейс, хп зига
                _iface = _root.attachMovie("interface", "interface", 15001, {_x:0, _y:0});
                updater();
        }
        function updater() {
                _iface.onEnterFrame = Delegate.create(this, updateInterface);
        }
        function updateInterface() {
                _scoreText.text = _score;
        }
}


MrPoma 05.06.2008 21:15

Во-первых, класс надо наследовать от MovieClip'а.

silin 05.06.2008 21:22

или в конструкторе:
_scoreText.setNewTextFormat(my_fmt);

или в updateInterface :
_scoreText.text = _score;
_scoreText.setTextFormat(my_fmt);

tikhop 05.06.2008 21:34

Код:

class Zig_game.Interface {
        private var _iface:MovieClip;
        private var _scoreTextField:TextField
        private var my_fmt:TextFormat
    private var _scoreText:Number
        // Конструктор
        function TextFormatClass() {
                _scoreText=0
                my_fmt = new TextFormat();
                my_fmt.color = 0x010101;
                my_fmt.size = 30;
                my_fmt.align = "center";
                my_fmt.font = "Arial";
                _scoreTextField = _root.createTextField("score_txt", 15006, 126, 11, 70, 55)
                updater();
        }
        function updater() {
                _scoreTextField.text = String(_scoreText)
                _scoreTextField.setTextFormat(my_fmt);
        }
}


Korsar Nik 05.06.2008 22:08

MrPoma,
Почему наследовать от Мувиклипа? Я думал об этом, но посчитал избыточным и просто неудобным в силу того, что проще аттачить 2 текстовых поля и 3 мувика (а именно столько мне надо) не в руте, а непосредственно в классе. Возможно, я чего-то не знаю, но создание экземпляра при подобном наследованим будет выглядеть как:
Код:

var iface:Interface = Interface(this.attachMovie("interface", "interface", _root.getNextHighestDepth(), {_x:x, _y:y});
Но только для одного клипа. Как сделать для большего количества я не знаю :))

Silin,
Видимо чего-то не хватает. При отладке ругается на задание свойств my_fmt: "This statement is not permitted in a class definition."

tikhop,
Спасибо, если немного адаптировать - всё работает.

Silin,
Пока разбирался с кодом от tikhop, понял главное, чего не хватало - объявления my_fmt как переменной типа TextFormat. Спасибо, тоже подходит.


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

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