Форум 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)
-   -   Проблемы с отображением TextField в MovieClip (http://www.flasher.ru/forum/showthread.php?t=143012)

Nef 05.08.2010 10:21

Проблемы с отображением TextField в MovieClip
 
Доброго времени суток, для создания TextField в MovieClipe-е пишу следующий код:
Код AS1/AS2:

 
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);

Но при тестировании вышеуказанная строка не отображается. В чем может быть проблема? Заранее спасибо.

mooncar 05.08.2010 10:44

Имя нужно задать, а вы этого не делаете. Кавычки поставьте:
Код AS1/AS2:

mc.createTextField('tf', 1,100,100,300,100);

PS.
i у вас еще не определено:
Код AS1/AS2:

"mc_"+i

Название мувика получится mc_undefined, но полагаю, что вы просто выдрали кусок из какого-то цикла.

Nef 05.08.2010 10:57

так и есть, кусок выдран из цикла, там переменная определена, а вот с именем - невнимателен. Спасибо

mooncar 05.08.2010 11:07

Кстати, метод createTextField также возвращает ссылку на созданное поле, поэтому аккуратнее можно записать:
Код AS1/AS2:

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;


Nef 07.09.2010 13:22

Доброго времени суток, вернемся так сказать к моим баранам:)Хочу сделать так, чтобы подгружаемый текст по-символьно вертелся в разных направлениях. Для этого прописываю следующий код:
Код AS1/AS2:

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);
};

Но при тестировании на экране ничего не отображается, Подскажите что делаю не так?Заранее спасибо

mooncar 07.09.2010 15:10

Код ваш не разбирал, в конце у вас там как-то кривенько все - функция в функции, интервальная функция непрерывно плодит функции на onEnterFrame. К тому же синтаксис интервальной функции предполагает запись подинтервальной без скобок, то есть просто указание ссылки на вызываемую функцию.
Это по коду.
И еще - чтобы динамическое текстовое поле с можно было вращать, в него нужно внедрить шрифты - нужные наборы символов и нужные гарнитуры.
В вашем случае - создаете где-нибудь за пределами видимости текстовое поле, внедряете туда нужный шрифт, а в коде пишите
Код AS1/AS2:

mc.tf.embedFonts = true ;


sniper007 06.11.2010 14:28

Столкнулся с такой проблемой:
В одном проекте вручную создаю MovieClip и внутри него программно пытаюсь вывести текст через TextField:
Код AS1/AS2:

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, то всё сразу прекрасно работает...
В чем может быть проблема?

mooncar 06.11.2010 17:47

А где вы код пишите?

sniper007 06.11.2010 20:34

код пишу в первом кадре мувика

sestem 06.11.2010 20:39

У меня сразу сработало


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

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