Просмотр полной версии : Не создается текстовое поле
Почему не создается текстовое поле?
_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";
И в моем и в твоем коде трейс выводит одно и то же - _level0.b
Получается, что MovieClip создается. Почему тогда не работает, если не сохранять в переменной?
может потому что код не в руте находится, а клип создается в руте
1. b.butt_1.text, а не butt_1.text
2. Размеры мувиклипа надо менять после того, как он перестал быть пустым, так размеры отражают не сам размер клипа, а его содержимого, но ведь текстового поля в нем еще нет, поэтому _xscale и _yscale становятся 0. Или же менять именно _xscale и _yscale
this.create
16.07.2007, 23:58
Почему не создается текстовое поле?
_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";
Всем спасибо. Еще только один вопрос хочу уточнить. Вот для этого случая (когда текстовое поле создается внутри MovieClip) как правильно глубины расставить? Должна ли быть глубина текстового поля меньше/больше или же равна глубине MovieClip? Просто при любых значениях все работает.
Глубина 0 для мувклипа берется относительно _root. Глубина 0 для текстового поля внутри мувиклипа берется относительно мувиклипа.
this.create
17.07.2007, 09:28
Всем спасибо. Еще только один вопрос хочу уточнить. Вот для этого случая (когда текстовое поле создается внутри MovieClip) как правильно глубины расставить? Должна ли быть глубина текстового поля меньше/больше или же равна глубине MovieClip? Просто при любых значениях все работает.
Обычно глубины расставляют так чтобы два разных объекта не оказались на одной глубине в одном мувиклипе. Если совпадет глубина объектов в одном мувиклипе, то последний созданный удалит предыдущий на той же глубине.
В вашем примере: для b берем свободную глубину рута, для текстового поля - свободную глубину b.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.