Форум 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=98564)

V_e_g_a 16.07.2007 17:46

Не создается текстовое поле
 
Почему не создается текстовое поле?
Код:

_root.createEmptyMovieClip ("b", 1);
b._x=150;
b._y=200;
b._width=50;
b._height=20;
b.createTextField("butt_1", 2, 150, 200, 50, 20);
butt_1.text="Button 1";


Aziz Zaynutdinoff 16.07.2007 17:51

потому что b ну существует... попробуйте протрейсить и поймете.

Код:

var _mc:MovieClip = _root.createEmptyMovieClip("b", _root.getNextHighestDepth());
_mc._x = 150;
_mc._y = 200;
var _txt:TextField = _mc.createTextField("butt_1", 2, 150, 200, 50, 20);
_txt.text = "Button 1";


V_e_g_a 16.07.2007 23:36

И в моем и в твоем коде трейс выводит одно и то же - _level0.b
Получается, что MovieClip создается. Почему тогда не работает, если не сохранять в переменной?

expl 16.07.2007 23:53

может потому что код не в руте находится, а клип создается в руте

iNils 16.07.2007 23:57

1. b.butt_1.text, а не butt_1.text
2. Размеры мувиклипа надо менять после того, как он перестал быть пустым, так размеры отражают не сам размер клипа, а его содержимого, но ведь текстового поля в нем еще нет, поэтому _xscale и _yscale становятся 0. Или же менять именно _xscale и _yscale

this.create 16.07.2007 23:58

Цитата:

Сообщение от V_e_g_a
Почему не создается текстовое поле?
Код:

_root.createEmptyMovieClip ("b", 1);
b._x=150;
b._y=200;
b._width=50;
b._height=20;
b.createTextField("butt_1", 2, 150, 200, 50, 20);
butt_1.text="Button 1";


1. Вы создаете текстовое поле внутри пустого мувиклипа, отсчет координат текстового поля пойдет от верхнего левого угла мувиклипа, поэтому не нужно смещать текстовое поле на 150, 200. Поэтому:
Код:

b.createTextField("butt_1", 2, 0, 0, 50, 20);
butt_1.text="Button 1";

2.
Код:

b.createTextField("butt_1", 2, 0, 0, 50, 20);
butt_1.text="Button 1";

Текстовое поле создано внутри мувиклипа, а текст задается как будто оно создано на руте. Вот как правильно задать текст:
Код:

b.createTextField("butt_1", 2, 0, 0, 50, 20);
b.butt_1.text="Button 1";

3. Нет необходимости задавать ширину и длину пустому клипу - его ширина и длина сами увеличатся кода внутри появится содержимое. Проверьте:
Код:

_root.createEmptyMovieClip ("b", 1);
b._x=150;
b._y=200;
b.createTextField("butt_1", 2, 0, 0, 50, 20);
b.butt_1.text="Button 1";
//
trace([b._width,b._height])

4. Рекомендую использовать переменные-контейнеры для хранения ссылок на объекты. Так вы избавитесь от длинных и некрасивых полных путей к объектам:
Код:

var mc:MovieClip = this.createEmptyMovieClip("b", this.getNextHighestDepth());
mc._x = 150;
mc._y = 200;
var tf:TextField = mc.createTextField("butt_1", mc.getNextHighestDepth(), 0, 0, 50, 20);
tf.text = "Button 1";


V_e_g_a 17.07.2007 01:24

Всем спасибо. Еще только один вопрос хочу уточнить. Вот для этого случая (когда текстовое поле создается внутри MovieClip) как правильно глубины расставить? Должна ли быть глубина текстового поля меньше/больше или же равна глубине MovieClip? Просто при любых значениях все работает.

iNils 17.07.2007 02:11

Глубина 0 для мувклипа берется относительно _root. Глубина 0 для текстового поля внутри мувиклипа берется относительно мувиклипа.

this.create 17.07.2007 09:28

Цитата:

Сообщение от V_e_g_a
Всем спасибо. Еще только один вопрос хочу уточнить. Вот для этого случая (когда текстовое поле создается внутри MovieClip) как правильно глубины расставить? Должна ли быть глубина текстового поля меньше/больше или же равна глубине MovieClip? Просто при любых значениях все работает.

Обычно глубины расставляют так чтобы два разных объекта не оказались на одной глубине в одном мувиклипе. Если совпадет глубина объектов в одном мувиклипе, то последний созданный удалит предыдущий на той же глубине.
В вашем примере: для b берем свободную глубину рута, для текстового поля - свободную глубину b.

V_e_g_a 17.07.2007 18:34

Понял. Спасибо.


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

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