Форум 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)
-   -   Динамическое создание Текстового Поля (http://www.flasher.ru/forum/showthread.php?t=135103)

greenhill 15.01.2010 19:50

Динамическое создание Текстового Поля
 
Привет всем!
Довелось править чужую флешку и вставлять динамически созданные текстовые поля.
Поля создаются, то есть когда наводишь над ними курсор меняется, но не отображается текст. Пример уже брала даже из хелпа. В новом фла все норм, а в данном мне проекте не отображается текст. Набран на транслите.
Что это может быть?
Даже не знаю уже куда копать.

Hauts 15.01.2010 19:56

Может поля находятся под мувиком каким-нибудь? Может в embed fonts нет символов, которые вы выводите?

Maximer 15.01.2010 21:36

Все просто. Дело в том, что вы создаете динамическое поле, а как я понимаю вам нужно поле для ввода. Для этого в вашем созданном текст. поле допишите:

Код AS1/AS2:

ваш_текст.type = "Input";

или посмотрите пример(код вставте в первый кадр):

Код AS1/AS2:

_root.createTextField("text_txt",0,0,0,0,0);
text_txt.autoSize = true;
text_txt.border = true;
text_txt.text = "текстик";
 
text_txt.type = "Input";


greenhill 16.01.2010 00:45

Нет, обычное поле. Текстовое.
Вот код из хелпа не работает:
Код AS1/AS2:

this.createTextField("my_txt", 1, 100, 100, 300, 100);
my_txt.multiline = true;
my_txt.wordWrap = true;
var my_fmt:TextFormat = new TextFormat();
my_fmt.color = 0xFF0000;
my_fmt.underline = true;
my_txt.text = "This is my first test field object text.";
my_txt.setTextFormat(my_fmt);

Находится этот клип сверху, шрифт прописала Ариал.
Не могу понять в чем дело :(

mr_pol 16.01.2010 08:02

Цитата:

Вот код из хелпа не работает
А у меня работает)

исходник бы ваш посмотреть. как я понял вы сами создаете на сцене текстовое поле, а потом с помощью этого
Цитата:

this.createTextField("my_txt", 1, 100, 100, 300, 100);
my_txt.multiline = true;
my_txt.wordWrap = true;
var my_fmt:TextFormat = new TextFormat();
my_fmt.color = 0xFF0000;
my_fmt.underline = true;
my_txt.text = "This is my first test field object text.";
my_txt.setTextFormat(my_fmt);
хотите в него что-то вставить. это не правильно

greenhill 16.01.2010 11:01

Код в пустом проекте у меня работает :))
В данном - нет.
Есть просто клип в первом и единственном кадре которого я код из хелпа вставляю.
Просто мною уже 1000 раз была проделана операция по созданию клипов и текстовых полей. Никогда проблем не было. А тут.. что-то странное.

Добавлено через 1 минуту
Цитата:

хотите в него что-то вставить. это не правильно
записать в него текст имелось в виду
Код AS1/AS2:

my_txt.text = "This is my first test field object text.";


Hauts 16.01.2010 12:28

Значит ищите разницу, между пустым проектом и этим. Потому, что код рабочий, и он создает текстовое поле.

greenhill 16.01.2010 12:47

Та я понимаю это все :)

Maximer 16.01.2010 15:59

Скопируйте мувиклип с текстом из новго проекта в ваш :) а лучше покажите исходник.

mr_pol 16.01.2010 16:38

давайте исходник!))

Hauts 16.01.2010 16:52

Исходник в студию!

MadCatt 20.01.2010 14:12

Такая же проблема. Но (!) в мувике текст нормально создается, а вот в _root никак. Симтомы аналогичные. Придется создавать кучу мувиков. Macromedia Flash 8.

mr_pol 20.01.2010 14:44

как вы пытаетесь создать текст в руте?

MadCatt 20.01.2010 15:08

Так же, как и в примере, причем он создается, просто как бы невидимый, но порядок обхода полей задан правильно, ибо он перегораживает мувик под ним.
*_root.createTextField("TKozel"+i, 1, 1, 1, 50, 50); //норм
_root["TKozel"+i].text="1"; //не видно...

Ну и еще параллельно трабл. В созданных в мувиках полях не работает форматирование:

* _root.attachMovie("MKozel", "MKozel"+i, i, {_x:xx, _y:yy, _alpha:100})
* _root["MKozel"+i].createTextField("TKozel"+i, 10, 10, 1, 20, 20);
var my_fmt:TextFormat = new TextFormat();
my_fmt.color = 0xFF0000;
my_fmt.underline = true;
my_fmt.bold=true;
my_fmt.font="Times New Roman";
_root["MKozel"+i]["TKozel"+i].setTextFormat(my_fmt);
* _root["MKozel"+i]["TKozel"+i].text = i;

То, что отмечено *, - работает, то, что не отмечено, - пропускается молча.

flamee 26.01.2010 11:55

Вы хоть посмотрели параметры которые используются для создания текстового поля? Подумайте зачем здесь "depth" и почему в руте в готовой флешке значение 1 испоьлзовать крайне не целесообразно. Замените значение 1 сразу после названия текстового поля на
Код AS1/AS2:

this.getNextHighestDepth()

и все будет в шеколаде.

siamesse 28.10.2010 17:26

Помогите мне пожалуйста! у меня есть код 3Dкуба, но мне надо присобачить на его грани текстовые поля Dynamic text и задать в них переменные от a1 до a6 и вывести в них просчитанные значения(код для этого пока в другом файле)! прилагаю исходник:

function makePoints() {
points = new Array();
points[0] = {x: 30, y: 30, z: 30};
points[1] = {x: -30, y: 30, z: 30};
points[2] = {x: -30, y: -30, z: 30};
points[3] = {x: 30, y: -30, z: 30};
points[4] = {x: 30, y: -30, z: -30};
points[5] = {x: 30, y: 30, z: -30};
points[6] = {x: -30, y: 30, z: -30};
points[7] = {x: -30, y: -30, z: -30};

for(i=0;i<points.length;i++) {
attachMovie( "point", "point"+i, i )
}
}

function makeLines() {
lines = new Array();
lines[0] = {p1: 0, p2: 1};
lines[1] = {p1: 1, p2: 2};
lines[2] = {p1: 2, p2: 3};
lines[3] = {p1: 3, p2: 0};
lines[4] = {p1: 4, p2: 5};
lines[5] = {p1: 5, p2: 6};
lines[6] = {p1: 6, p2: 7};
lines[7] = {p1: 7, p2: 4};
lines[8] = {p1: 0, p2: 5};
lines[9] = {p1: 1, p2: 6};
lines[10] = {p1: 2, p2: 7};
lines[11] = {p1: 3, p2: 4};

for(i=0;i<lines.length;i++) {
attachMovie( "line", "line"+i, 50+i )
}
}

function plotPoint(object) {
x = object.x;
y = object.y
z = object.z;

radius = Math.sqrt (x*x+y*y);

if (x == 0) angle = Math.atan(1000000);
else angle = Math.atan(y/x);
if (x < 0) angle += Math.PI;

angle += rotation;

realx = radius*Math.cos(angle);
realz = radius*Math.sin(angle);
realy = z;

radius = Math.sqrt(realy*realy+realz*realz);

if (realz == 0) angle = Math.atan(1000000);
else angle = Math.atan(realy/realz);
if (realz < 0) angle += Math.PI;

angle += plane;

screenx = realx;
screeny = radius*Math.sin(angle);
screenz = radius*Math.cos(angle);

screenx += 275;
screeny += 200;

return({x:screenx,y:screeny,z:screenz});
}

function drawPoints() {
for(i=0;i<points.length;i++) {
loc = plotPoint(points[i]);
this["point"+i]._x = loc.x;
this["point"+i]._y = loc.y;
this["point"+i]._alpha = loc.z+100;
}
}
function drawLines() {
for(i=0;i<lines.length;i++) {
loc1 = plotPoint(points[lines[i].p1]);
loc2 = plotPoint(points[lines[i].p2]);
this["line"+i]._x = loc1.x;
this["line"+i]._y = loc1.y;
this["line"+i]._xscale = loc2.x-loc1.x;
this["line"+i]._yscale = loc2.y-loc1.y;
this["line"+i]._alpha = loc1.z+100;
}
}

function reposition() {
rotation += (275-_xmouse)/1000;
plane = -(200-_ymouse)/100;
drawPoints();
drawLines();
}

rotation = 0;
makePoints();
makeLines();
stop();

И вот, для просчёта значений:
a1=1;
a2=2;
a3=3;
a4=4;
a5=5;
a6=6;
for(i=0;i<10;i++){
b1=" ";
b2=" ";
b3=" ";
b4=" ";
b5=" ";
b6=" ";
//b
b1=(a5+a4+a2+a6)/4;
b2=(a1+a3+a5+a6)/4;
b3=(a5+a4+a2+a6)/4;
b4=(a5+a1+a3+a6)/4;
b5=(a1+a4+a3+a2)/4;
b6=(a1+a2+a3+a4)/4;
a1=" ";
a2=" ";
a3=" ";
a4=" ";
a5=" ";
a6=" ";
//a
a1=(b5+b4+b2+b6)/4;
a2=(b1+b3+b5+b6)/4;
a3=(b5+b4+b2+b6)/4;
a4=(b5+b1+b3+b6)/4;
a5=(b1+b4+b3+b2)/4;
a6=(b1+b2+b3+b4)/4;
}


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

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