Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.06.2008, 20:18
Korsar Nik вне форума Посмотреть профиль Отправить личное сообщение для Korsar Nik Найти все сообщения от Korsar Nik
  № 1  
Ответить с цитированием
Korsar Nik

Регистрация: May 2006
Сообщений: 36
По умолчанию Использование 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;
	}
}

Старый 05.06.2008, 21:15
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 2  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Во-первых, класс надо наследовать от MovieClip'а.
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 05.06.2008, 21:22
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 3  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
или в конструкторе:
_scoreText.setNewTextFormat(my_fmt);

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

Старый 05.06.2008, 21:34
tikhop вне форума Посмотреть профиль Отправить личное сообщение для tikhop Найти все сообщения от tikhop
  № 4  
Ответить с цитированием
tikhop

Регистрация: Jul 2006
Сообщений: 170
Код:
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);
	}
}

Старый 05.06.2008, 22:08
Korsar Nik вне форума Посмотреть профиль Отправить личное сообщение для Korsar Nik Найти все сообщения от Korsar Nik
  № 5  
Ответить с цитированием
Korsar Nik

Регистрация: May 2006
Сообщений: 36
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, время: 01:04.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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