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

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

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

Регистрация: Mar 2006
Сообщений: 4
По умолчанию Не отображается TextField при создании в подклипе

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

Код:
onClipEvent(load) {
	mcThis = this;
	mcThis._dx = 0;
	mcThis._stopOnImg = false;
	mcThis._lastLeft = 0;

	if(_root.propNum == null) _root.propNum = 5;
	mcThis.propositions = new Array(_root.propNum);

	for(i=0; i< _root.propNum; i++) {
		if(_root["prop_img"+String(i)] != null and _root["prop_annot"+String(i)] != null and _root["prop_header"+String(i)] != null and _root["prop_link"+String(i)] != null and _root["prop_width"+String(i)] != null) {
			mcThis.propositions[i] = new Array(i, _root["prop_img" + String(i)], _root["prop_header" + String(i)], _root["prop_annot" + String(i)], _root["prop_link" + String(i)], int(_root["prop_width" + String(i)]));

			var mc_prop:MovieClip = mcThis.createEmptyMovieClip("prop" + String(i), mcThis.getNextHighestDepth());
			mc_prop._x = mcThis._lastLeft;
			mcThis._lastLeft += mcThis.propositions[i][5] + 10;
			mc_prop._num = i;
			mc_prop._link = mcThis.propositions[i][4];
			mc_prop.createEmptyMovieClip("image", mc_prop.getNextHighestDepth());
			mc_prop.image.loadMovie(mcThis.propositions[i][1]);
			var tf1:TextField = mc_prop.createTextField("tf", mc_prop.getNextHighestDepth(), 1, 124, mcThis.propositions[i][5], 40);
			tf1.text = mcThis.propositions[i][2];
			tf1.multiline = false;
			tf1.textColor = 0x34717E;
			var my_fmt:TextFormat = new TextFormat();
			my_fmt.color = 0x34717E;
			my_fmt.align = "center";
			my_fmt.font = "Myriad Pro, Arial";
			my_fmt.kerning = true;
			my_fmt.size = 14;
			my_fmt.leading = -2;
			tf1.setTextFormat(my_fmt);
			
			var tf2:TextField = mc_prop.createTextField("tf2", mc_prop.getNextHighestDepth(), 1, 136, mcThis.propositions[i][5], 40);
			tf2.multiline = true;
			tf2.wordWrap = true;
			tf2.html = true;
			var my_fmt2:TextFormat = new TextFormat();
			my_fmt2.color = 0xFFFFFF;
			my_fmt2.align = "center";
			my_fmt2.font = "Myriad Pro, Arial";
			my_fmt2.kerning = true;
			my_fmt2.size = 14;
			my_fmt2.leading = -2;
			tf2.htmlText = mcThis.propositions[i][3];
			tf2.setTextFormat(my_fmt2);


			mc_prop.onMouseUp = function() {
				if(this._xmouse > 0 and this._xmouse < this._width and this._ymouse > 0 and this._ymouse < this._height) {
					getURL(this._link);
				}
			}

			mc_prop.onRollOver = function() {
				_root.mc_props._dx = 0;

				var myDropFilter = new flash.filters.GlowFilter(0x85BFCE, 10, 3, 3, 5, 50, false, false);
				var myFilters:Array = this.filters;
				myFilters[0] = myDropFilter;
				this.filters = myFilters;				
			}
			
			mc_prop.onRollOut = function() {
				this.filters = new Array();
			}
		}
	}
}


Последний раз редактировалось MarVal; 17.06.2008 в 16:57.
Старый 17.06.2008, 17:12
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 2  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Связано это с тем, что фонт в tf1 не внедренный. А вот почему при фильтре он виден - вопрос интересный. Скорее всего потому, что фильтр тупо создает битмапу - и фонт там прорисовывается (растеризовывается) - и текст становится виден. Кстати - тот ли шрифт?

Старый 17.06.2008, 19:03
MarVal вне форума Посмотреть профиль Отправить личное сообщение для MarVal Найти все сообщения от MarVal
  № 3  
Ответить с цитированием
MarVal

Регистрация: Mar 2006
Сообщений: 4
Шрифт Myriad Pro использую, как это в коде и написано. Я не совсем понял вопроса - что значить "тот ли"?
Попробовал внедрить шрифт, но почему-то русские символы не отображаются.

Старый 17.06.2008, 19:24
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 4  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
my_fmt2.font = "Myriad Pro, Arial"; - это не внедрение шрифтов.
Внедрение шрифтов происходит в два этапа:
1) помещаем динамическое текстовое поле с включенным внедрением на таймлайн (тоже выйдет при экспорте библиотечного символа содержащего такое текстовое поле в первый фрейм)
2) В уже нужном нам динамическом текстовом поле прописываем embedFonts=true
В вашем случае
Код:
tf1.embedFonts=true

Старый 17.06.2008, 19:29
MarVal вне форума Посмотреть профиль Отправить личное сообщение для MarVal Найти все сообщения от MarVal
  № 5  
Ответить с цитированием
MarVal

Регистрация: Mar 2006
Сообщений: 4
Я понимаю, что та строка в коде - это не внедрение.
Я добавил в библиотеку ролика шрифт, и задал в linkage его идентификатор и отметил галку "Export for ActionScript". Этого недостаточно?
Код:
tf1.embedFornts=true;
это тоже уже написал. Собственно в результате этих действий и получилось то что я описал выше - не отображаются русские символы в текстовом поле.

Старый 17.06.2008, 20:20
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 6  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Внедрение шрифта делается не так. (поищите поиском по форуму).
А если делаете как вы, то надо писать my_fmt2.font = "имя_фонта_в_библиотеке" и проверить есть ли у этого фонта русские символы вообще. Но такой вариант довольно гиблый и негибкий. Лучше научиться нормально внедрять.

Старый 17.06.2008, 21:43
MarVal вне форума Посмотреть профиль Отправить личное сообщение для MarVal Найти все сообщения от MarVal
  № 7  
Ответить с цитированием
MarVal

Регистрация: Mar 2006
Сообщений: 4
Спасибо за помощь. Проблема решена внедрением шрифта в главном ролике.

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
createemptymovieclip , createtextfield , подклип

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

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


 


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


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