Просмотр полной версии : Проблемы с отображением TextField в MovieClip
Доброго времени суток, для создания TextField в MovieClipe-е пишу следующий код:
var str = "Hai hai";
var mc:MovieClip;
mc = this.createEmptyMovieClip ("mc_"+i, this.getNextHighestDepth());
mc.createTextField(tf, 1,100,100,300,100);
mc.tf.type = "dynamic";
mc.tf.textColor = 0x00CCFF;
mc.tf.text = str;
trace(mc.tf.text);
Но при тестировании вышеуказанная строка не отображается. В чем может быть проблема? Заранее спасибо.
Имя нужно задать, а вы этого не делаете. Кавычки поставьте:
mc.createTextField('tf', 1,100,100,300,100);
PS.
i у вас еще не определено:
"mc_"+i
Название мувика получится mc_undefined, но полагаю, что вы просто выдрали кусок из какого-то цикла.
так и есть, кусок выдран из цикла, там переменная определена, а вот с именем - невнимателен. Спасибо
Кстати, метод createTextField также возвращает ссылку на созданное поле, поэтому аккуратнее можно записать:
var str:String = 'Hai hai';
var mc:MovieClip = this.createEmptyMovieClip('mc_' + i, this.getNextHighestDepth());
var tf:TextField = mc.createTextField('tf', 1, 100, 100, 300, 100);
tf.type = 'dynamic';
tf.textColor = 0x00CCFF;
tf.text = str;
Доброго времени суток, вернемся так сказать к моим баранам:)Хочу сделать так, чтобы подгружаемый текст по-символьно вертелся в разных направлениях. Для этого прописываю следующий код:
var All:String;
var count:Number;
var mlt:LoadVars = new LoadVars();
var mc:MovieClip;
var coord:Number;
var mcs = new Array();
//Массив клипов символов
var angle_step:Number;
var middle:Number;
var j:Number, d:Number;
//----------------------------------------------------------------------------------------------------------------------------------//
Text.autoSize = true;
mlt.onLoad = function(success:Boolean) {
if (success) {
All = this.tf;
//подгружаем текст из файла
//----------------------------------------------------------------------------------//
for (var i:Number = 0; i<=All.length; i++) {
mc = createEmptyMovieClip("mc_"+i, this.getNextHighestDepth());
coord = mc._x+i*15;
mc.createTextField("tf", mc.getNextHighestDepth(), coord, 100, 100, 100);
mc.tf.type = "dynamic";
mc.tf.textColor = 0x00CCFF;
mc.tf.text = All.charAt(i);
trace(mc.tf.text);
mTF = new TextFormat();
mTF.font = "Arial Cyr";
mTF.size = 30;
mc.tf.setTextFormat(mTF);
mc.i = i;
mc.angle = angle_step*i-360;
d = Math.floor(Math.abs(mc.angle)/angle_step)-middle;
d>0 ? null : d -= 1;
mc.depth = d;
mc.swapDepths(mc.depth);
mcs.push(mc);
mcc.push(mc.tf._rotation);
}
//--------------------------------------------------------------------------------------------//
}
};
mlt.load("info.txt");
function animate() {
onEnterFrame = function () {
for (j=0; j<mcs.length; j++) {
mc[j] = mcs[j];
mc[j].tf._rotation = Math.random(10)*1000;
mc[j]._x += 50;
mc[j].tf._y += 0.55;
}
}
setInterval(animate(),10);
};
Но при тестировании на экране ничего не отображается, Подскажите что делаю не так?Заранее спасибо
Код ваш не разбирал, в конце у вас там как-то кривенько все - функция в функции, интервальная функция непрерывно плодит функции на onEnterFrame. К тому же синтаксис интервальной функции предполагает запись подинтервальной без скобок, то есть просто указание ссылки на вызываемую функцию.
Это по коду.
И еще - чтобы динамическое текстовое поле с можно было вращать, в него нужно внедрить шрифты - нужные наборы символов и нужные гарнитуры.
В вашем случае - создаете где-нибудь за пределами видимости текстовое поле, внедряете туда нужный шрифт, а в коде пишите
mc.tf.embedFonts = true ;
sniper007
06.11.2010, 14:28
Столкнулся с такой проблемой:
В одном проекте вручную создаю MovieClip и внутри него программно пытаюсь вывести текст через TextField:
var pole:TextField = this.createTextField('pole',this.getNextHighestDepth(),0,0,150,120);
pole.text='Отображаемый текст';
pole.type = 'dynamic';
pole.border=true;
pole.multiline=true;
pole.wordWrap=true;
pole.setTextFormat(new TextFormat('ar_font',12));
В результате ничего не отображается. НО! если создать новый проект и в него скопировать этот MovieClip, то всё сразу прекрасно работает...
В чем может быть проблема?
sniper007
06.11.2010, 20:34
код пишу в первом кадре мувика
sniper007
06.11.2010, 22:20
в том то и проблема, что если этот код вставить в чистый мувик - то всё работает...
когда мышкой наводишь на место, где создается
createTextField('pole',this.getNextHighestDepth(),0,0,150,120);
то курсор меняется на "выделение текста", т.е. само поле для текста создалось... но текста нет.
пробывал менять цвет текста - не помогло.
в дебаге смотрел созданную переменную "pole" - ей нормально присваивается нужный текст - но черт возьми на экране он отображаться отказывается....
не понимаю куда копать... может там есть какие-то параметры у textField`а, которые не дают нормально выводить текст?
Добавлено через 9 часов 50 минут
сейчас попробывал создать вручную TexеField и написать какой-нибудь текст. в результате: если он является динамическим он не отображается, но если поменять на статический - отображается... от чего такое может зависеть?
sniper007
18.11.2010, 22:44
после очень долгих манипуляций, разобрался в чем была проблема... верхним слоем была маска, под которой динамический текст не отображается.
получилось обойти при помощи cacheAsBitmap = true для мувика, в котором создавался текст.
А что, шрифт не внедрен? Хоть какие маски, если шрифт внедрен, все должно работать.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.