![]() |
createTextField , MovieClipLoader и уровни
Привет!
Мне надо погрузить клип и поверх него написать текст, делаю так: На первом кадре слоя uploader: Код:
function loadMuvie(path:String, target){Код:
ptimer = new Date();Пробовал указывать разные слои и у текстового поля и у клипа, результат одинаковый. Я пишу на php, а это другая спицифика... Скажите, что за фигня с этими слоями?!?! |
target должен быть мувиклипом, а не числом.
|
Хм, завтра попробую... У меня в книге написано, что можно передавать число - номер слоя.
|
Всё верно, сейчас скачал мануал из прикреплённой темы:
Синтаксис my_mcl.loadClip(url:String, target:Object ) : Boolean Параметры target Число, определяющее уровень во флэш плеере или путь к клипу, в который файл должен быть загружен. Содержимое клипа будет замещено загружаемым SWF файла или изображением. хотя смущает target:Object :) |
А, пардон, там можно и уровень указывать.
Вообще говоря, лучше вместо уровней создавать клип и в него грузить. з.Ы. Object просто означает, что target может быть как Number, так и MovieClip. |
Цитата:
Получается, что по мануалу я всё делаю правильно? Я это делал в конце рабочего дня, и с этой фигнёй мозг совсем опух! сначла я делал с loadMovie() и loadMovieNum() и ничего не получалось, потом на этом форуме и несколько раз прочитал фразу: "используйте MovieClipLoader и проблем не будет", но при использовании этого класса у меня ничего не изменилось. |
Вообще говоря от Object в AS наследуется все.
Загрузку в уровни уже пора забыть, грузите в мувиклип. |
Т.е. если я средствами AS создам клип на 10 слое и средствами AS загружу в него внешний клип, то уровень внешнего клипа будет = 10
Блин, что-то не то... Вроде бы в AS крутая объектная модель, а один из основных методов реализован криво? PS: И ещё я не понимаю, как устроены слои, т.е. если я в программе Flash CS3 создаю несколько слоёв, в которых я что-то рисую (например 4 слоя с различными текстовыми названиями) и создаю средствами AS клип на слое с номером 2, то где он создасться? Т.е. есть бывает простой массив данных, а бывает ассоциативный массив. В DOM именованые слои представляют собой ассоциативный массив, т.е если у меня есть слои lvl_a, lvl_b и lvl_c, то массив представляющий DOM будет таким array(lvl_a =>... , lvl_b=>... , lvl_c => .... ) если я добавлю эллемент с ключом 2, то массив станет: array(lvl_a =>... , lvl_b=>... , lvl_c => .... , 2) или массив выглядит так: array(1 =>(lvl_a,...) , 2 =>(lvl_b,...) , 3 =>(lvl_c,...) , 4=>(...)), но тогда получается, что я не могу размещать клипы, которые созданы при помощи AS ниже слоём, который создвны в программе. Блин, что за фигня? |
Нет в swf слоев. Если это клипы, созданные вручную на сцене, то у них глубина порядка -16384, поэтому если нужно разместить что-то ниже их, то надо писать при создании глубину меньшую. Но при этом нужно учесть, что удалить клип можно только с положительной глубины.
А про уровни _levelN нужно вообще забыть. |
Ну хоть в третей версии что-то изменилось с реализацией DOM?
(Я не в курсе, т.к. последний раз писал на AS в 2002 году :) ) |
Изменилось, там глубины от 0 начинаются :D И пустых не бывает.
|
_levelN - это не уровень, а этаж. Ваше текстовое поле создано на 0-м этаже, стало быть оно осталось далеко внизу.
|
Цитата:
при загрузке клипа я указываю 10, а при создании текстового поля 50. Вы говорите, что 10 и 50 это разный тип слоёв? PS: Я попробовал сделать ... loadMuvie(_root.pepa_skin, 10); ... _level10.createTextField("timer_field", 10, 887.8, 49.6, 82.2, 30); Но тогда текстовое поле совсем не отображается |
Вы ничего не можете создать на level, только подгрузить. Я привел аналогию с этажами, потому что это наглядно - ваш мувик это самый первый этаж (_level0). Вы можете сколько угодно вставать на стремянку, модете приклеить бумажку к потолку - но пол 10-го этажа выше вашего потолка. Не надо юзать - это тупик. Работайте на одном этаже. Создали пустой клип, загрузили в него - все счастливы.
P.S. Поле не создается, потому что клип еще не загрузился. |
А вы не сильно заморачиваетесь? Может контейнер вложить в мувик, а в этом мувике на верхнем слое просто сделать текст?
|
Цитата:
В окне превью я нажал Ctrl+L И в окне вывода были такие строки: Код:
Level #10: Frame=1 |
Разберемся с терминами. Есть уровень (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.createTextField("timer_field", 10, 887.8, 49.6, 82.2, 30);Код:
_level0 |
Упс. Вот это лекция. Исчерпывающе.
"Пол" и "потолок" на языке цифр )) Цитата:
|
Мммм, iNils, а где там _level10 в коде автора? Ну кроме loadClip, конечно.
|
iNils - круто! Очень понятно объяснил! Спасибо! Лекция удачна.
2 __etc: Тут у меня была попытка http://www.flasher.ru/forum/showpost...4&postcount=13 создать на 10 уровне. Но я не знал, что плеер не ждёт, пока выполнится предидущее действие и продолжает выполнение кода. |
Цитата:
|
Цитата:
Я привык к другим языкам, где пока не выполнил, дальше не пошёл :moder: |
Цитата:
У вас скажем 5 кадров в таймлайне. На первом кадре пару строк кода, скажем загрузка чего либо и определение переменной, а на последнем кадре условие и в зависимости от определенной переменной делаются разные вещи. И еслибы на момент загрузки выподнее код дальше прекращалось, то переменная бы не определялась и дойдя до последнего кадра анимации условие бы не выполнялось. А самое смешное, что после этого заканчивается загрузка и переменная определилась, только она нам уже не нужна :) |
| Часовой пояс GMT +4, время: 15:13. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.