Форум 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)
-   -   createTextField , MovieClipLoader и уровни (http://www.flasher.ru/forum/showthread.php?t=99035)

etc 27.07.2007 01:05

Изменилось, там глубины от 0 начинаются :D И пустых не бывает.

Kikasso 27.07.2007 03:07

_levelN - это не уровень, а этаж. Ваше текстовое поле создано на 0-м этаже, стало быть оно осталось далеко внизу.

bettrrr 27.07.2007 11:57

Цитата:

Сообщение от Kikasso
_levelN - это не уровень, а этаж. Ваше текстовое поле создано на 0-м этаже, стало быть оно осталось далеко внизу.

Поясните пожалуйста..
при загрузке клипа я указываю 10, а при создании текстового поля 50.
Вы говорите, что 10 и 50 это разный тип слоёв?

PS: Я попробовал сделать
...
loadMuvie(_root.pepa_skin, 10);
...
_level10.createTextField("timer_field", 10, 887.8, 49.6, 82.2, 30);

Но тогда текстовое поле совсем не отображается

Kikasso 27.07.2007 12:32

Вы ничего не можете создать на level, только подгрузить. Я привел аналогию с этажами, потому что это наглядно - ваш мувик это самый первый этаж (_level0). Вы можете сколько угодно вставать на стремянку, модете приклеить бумажку к потолку - но пол 10-го этажа выше вашего потолка. Не надо юзать - это тупик. Работайте на одном этаже. Создали пустой клип, загрузили в него - все счастливы.

P.S. Поле не создается, потому что клип еще не загрузился.

PikseL 27.07.2007 12:44

А вы не сильно заморачиваетесь? Может контейнер вложить в мувик, а в этом мувике на верхнем слое просто сделать текст?

bettrrr 27.07.2007 12:45

Цитата:

Сообщение от Kikasso
Вы ничего не можете создать на level, только подгрузить. Я привел аналогию с этажами, потому что это наглядно - ваш мувик это самый первый этаж (_level0). Вы можете сколько угодно вставать на стремянку, модете приклеить бумажку к потолку - но пол 10-го этажа выше вашего потолка. Не надо юзать - это тупик. Работайте на одном этаже. Создали пустой клип, загрузили в него - все счастливы.

P.S. Поле не создается, потому что клип еще не загрузился.

Ппасибо, понятно!

В окне превью я нажал Ctrl+L
И в окне вывода были такие строки:
Код:

Level #10: Frame=1
  Shape:
  Movie Clip: Frame=1 Target="_level10.instance3"
    Shape:
  Shape:
  Movie Clip: Frame=1 Target="_level10.instance4"
    Shape:
  Shape:
  Movie Clip: Frame=1 Target="_level10.instance5"
    Shape:
  Shape:

почему на уровне 3 объекта, хотя у меня только один раз используется clipLoader.loadClip("qwe.swf", 10) ?

iNils 27.07.2007 12:55

Разберемся с терминами. Есть уровень (level), есть глубина (depth) и есть слой (layer).
Когда флеш плеер подгружает swf, он помещает его в _level0. И когда в этом swf мы обращаемся к _root, то на самом деле мы обращаемся к _level0. Если мы загружаем еще один swf в уровень, скажем в _level1, то его _root, будет обращаться к _level1. Это первое его отличие от глубины, второе, это то, что мы не можем создать мувиклип, текстовое поле или приаттачить мувиклип в уровень. Только загрузить туда другой swf и только ГЛОБАЛЬНЫМИ функциями, сделать это методами MovieClip нельзя.

Каждый мувиклип (включая основной таймлайн, он же _root, он же _levelN) имеет диапазон глубин -16'384 .. 1'048'575. Где:
0..1'048'575 - предназначены для программно использования
-16'383..-1 - для объектов созданных вручную (то есть все мувиклипы, кнопки, текстовый поля, который вы расположили в среде разработки, помещаются в этом диапазоне). Конечно можно программно и сюда помещать свои объекты, но таким образом вы можете занять уже использованную глубину и удалить объект который вы расположили в ручную. Понятие слоев, есть только внутри fla для удобства работы, при создании swf, все объекты помещаются на заданные глубины.
-16'384 - для программного использования, когда вам надо расположить программно объект ниже, чем нарисованные объекты.
Создавая новый мувиклип, вы также получаете в нем диапазон глубин как и было описано выше.

Теперь ваш код.
Код:

loadMovie(_root.pepa_skin, 10);
Это значит, что раньше у вас был:
Код:

_level0
а теперь
Код:

_level0
_level10

А после
Код:

_level10.createTextField("timer_field", 10, 887.8, 49.6, 82.2, 30);
уже
Код:

_level0
_level10
        timer_field (на глубине 10)

Но по скольку ваш код выполнялся линейно, то к моменту выполнения _level10.createTextField в _level10 еще не был загружен мувиклип. Так как выполнение кода асинхронно загрзуке (пока ОС найдет местоположение файла, пока головки в диске займут нужное место, пока считают, все это происходит медленнее, чем выполнение кода). Поэтому текст и не создается.

Kikasso 27.07.2007 13:01

Упс. Вот это лекция. Исчерпывающе.
"Пол" и "потолок" на языке цифр ))
Цитата:

Сообщение от bettrrr
почему на уровне 3 объекта, хотя у меня только один раз используется clipLoader.loadClip("qwe.swf", 10) ?

Ну ведь мувик-то не пустой грузите наверное.

etc 27.07.2007 13:02

Мммм, iNils, а где там _level10 в коде автора? Ну кроме loadClip, конечно.

bettrrr 27.07.2007 13:26

iNils - круто! Очень понятно объяснил! Спасибо! Лекция удачна.

2 __etc: Тут у меня была попытка http://www.flasher.ru/forum/showpost...4&postcount=13 создать на 10 уровне.
Но я не знал, что плеер не ждёт, пока выполнится предидущее действие и продолжает выполнение кода.


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

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