Просмотр полной версии : Быстродействие и вообще обо всем сразу
Уважаемые флешеры!
У меня два вопроса.
Первый такой:
Из мувика mc, внутрь себя пытаюсь сдублировать клип лежащий в _root
Тоесть что-то типа
_root.Effect.duplicateMovieClip("mc001",z++); //Это написано внутри клипа mc,
_root
|
|-Effect
|-mc
| |- Вот сюда пытаюсь приделть mc001
Эта штука почямуто несрабатывает.
Почаму ?
Второе.
если mc._visible=0;
То Мувик обсчитывается или нет флешом?
Тоесть в тормознутость свой вклад вносит ?
Третье.
Как вообсче FPS померять ?
Четвертое (ух разогнался.....) ;)
Про команду
duplicateMovieClip("MuvieName",z++);
Вот этот z мне недает покоя.
В хелпе написано, что первый созданный в instanceX мувик
получает этот z (ну уровень)==0;
Хорошо, Пусть.
Я допустим уже создал руками в слое 15 объектов,
и хочу Дублированием сделать 16ый 17ый, 18ый ...
мне что надо
z=(15-1);
mcTarget.duplicateMovieClip("MuvieName"+z,z++);
А если мне неважно кто над кем получится ?
Могу я сразу со 100 начать ? Как он это поймет?
Один и тот же z двум объектам задавать я так понял (эксперементально) нельзя.
А может есть функция возвращающая верхний текущий уровень объекта ?
Что-то типа
z=UpperMCLevel();
.....
:D ======= Всем Спасибо! ======== :D
Хм...
ну ты даеш во первых duplicateMovieClip (,,) пишется так
duplicateMovieClip(<имя оригинала>, <имя дубликата>,<номер слоя>)
теперь смари сюда
допустим у тебя есть клип который ты хочеш размножить такое количество раз которое ты укажеш допустим "х" :)
Пишеш
Допустим "head" имя сущности(объекта) в сцене
N_layer = 1;//Переменная номира слоя :D
var_x = 100;//Переменная определяющяя количество дубликатов ;)
for (i = 0; i < var_x; i++){
N_layer++;//Увеличим уровень отобажения (не путать с качеством)
dupl_name = "n" add N_layer//формируем переменную дубликата так сказать имя. ;)
// Теперь пишеш так
duplicateMovieClip(head,dupl_name,N_layer)
Чтобы видеть что у нас разные элементы тоесть дупликаты делаеш так ...
setProperty(dupl_name,_x,10*var_x);
setProperty(dupl_name,_y,10*var_x);
}
Ну вот и все ..
Оригинал написал(а) Big_J_
Хм...
ну ты даеш во первых duplicateMovieClip (,,) пишется так
duplicateMovieClip(<имя оригинала>, <имя дубликата>,<номер слоя>)
Пишется он и так как ты говоришь и так как я говорю. Не веришь - нажми f1 в самом flashe 5.
Да и просто попробовать можно. - оба варианта работают
duplicateMovieClip(target, newname, depth);
anyMovieClip.duplicateMovieClip(newname, depth);
То что ты далее пишешь - все правильно. Только это я и так знаю ;(
А непонятно вот что.
Предположим, ты дублированием занимаешься там, где уже есть мувики, так вот вопрос в том, что мне что,? сначала вручную посчитать сколько их там есть и только потом начальную высоту задать ?
Предположим ты сгенерил Х мувиков, потом У потом еще D мувиков... И ты их допустим не посчитал. Ну мог конечно посчитать но не стал. И теперь хочешь узнать сколько у тебя мувиков в данной сцене. Или с какого уровня тебе можно начинать добавлять новые мувики.
Вот и все.
А про дублирование из уровня выше себя ?
У тебя работает ?
Вот млин яж тебе пишу используй N_layer и при каждом дублировании клипов добавляеш ему +1 для чего как ты думаеш как раз для того чтобы знать когда и сколько ты дублировал затем пишеш новые дубликаты опять добавил +1 и поехал
Ты спрашуеш чего будет если заново с темже слоем работать да в принципе будет дублирование клипа и будет замена старого новым...
так что лучше на новый слой заходить :)
Вот так вот ;)
Nox Noctis
11.12.2001, 16:47
во-первых клипы всегда можно пересчитать циклом вроде
for (i in container_clip) {
if (eval(i).__proto__ == MovieClip) {
counter++
}
}
или то же для уровня
(правда такой подсчет посчитает и все недублированные клипы, но это легко обойти... если надо...)
во-вторых вопрос мне кажется в том, что при дублировании нельзя перенести созданный клип в другой мув относительно своего родителя. (и не важно, используется метод объекта MovieClip или стандартная функция)
нельзя и все. используй аттач вместо дубликейта и все пучком.
используй аттач вместо дубликейта и все пучком
А можно поподробней про этот Атач.
Что это, в чем разница и суть ?
И про _visible=0 ? При визибле = 0 ролик продолжает обсчитываться , тоесть волнует то, отнимает ли он ресурсы по быстродействию ?
И последнее.. Как считать ФПС ? Хочу ФПС !
Nox Noctis
11.12.2001, 17:18
про это (различия и достоинства аттача и дубликейта) уже стока сказано здесь...
ну да ладно.
дубликейт создает копию клипа внутри того же мувика, в котором находится родительский клип на заданной глубине. (номер слоя ведь в конечно счете указвает просто на глубину)
аттач вытаскивает клип из библиотеки по его линкейджу и кладет куда скажешь. ограничений здесь нет. НО все клипы, у которых указан линкейдж загружаются до первого кадра свфника - отсюда необходимость в таком случае делать внешний, а не внутренний прелоадер.
я обычно пользуюсь аттачем, если только зачем-то не нужно обязательно использовать дубликейт.
аттач удобнее тем, что тебе не нужен шаблон на сцене - он у тебя в библиотеке + нет ограничений на то, куда его можно положить. (хотя вру, ограничение одно есть - между двумя разными свфниками (когда грузишь один в другой loadMovie) клипы не аттачатся... т.е. приаттачить можно в любое место того свфника, в библиотеке которого лежит клип)
Nox Noctis
11.12.2001, 17:31
реальный ФПС
делаешь счетчик, который приращивается на enterFram'e.
измеряешь время, прошежшее с момента старта (getTimer(); )
переводишь время в секунды и делишь значение счетчика на значение времени. получаешь настоящий фпс.
дешево и сердито. ;)
attachMovie
Синтаксис
anyMovieClip.attachMovie(idName, newname, depth);
Аргументы
idName Имя (идентификатор) присоединяемого из библиотеки мувиклипа. Оно вводится в поле Identifier диалогового окна Symbol Linkage Properties.
newname Уникальное имя для присоединенного мувиклипа.
depth Целое число, задающее номер уровня 1, на каторый должен быть помещен мувиклип.
Описание
Метод; создает новый эталон мувиклипа в библиотеке и присоединяет его к клипу, указанному в anyMovieClip. Используйте команду или метод removeMovieClip или unloadMovie для удаления мувиклипа, присоединенного с помощью attachMovie.
Спасибо!
Все уяснил. Буду применять.
Остался вопрос про _visible=0;
но это фигня, теперь ФПС сам померяю.
А вот у меня по ходу дела затык получился такой, что я функцию определили в самом мувиклипе, а вызвать ее хочу из мувика, который в мувике, который....
И не вызывается. Аааа почаму ???
По моему при _visible=0; ничего не пашет в скриптах МС, чем он и отличается от _alpha=0; МС как-бы исчезает, ему также низя передать команды и переменные при _visible=0(false);
Так тихо давайте посмотрим _alpha и _visible
И так посморим ...
_alpha
Синтаксис
instancename._alpha
instancename._alpha = value;
Аргументы
instancename Имя экземпляра (образца) муви-клипа.
value Целое число от 0 до 100, определяющее прозрачность.
Описание
Свойство муви-клипа; устанавливает прозрачность (value) муви-клипа. Диапазон от 0 (полная прозрачность) до 100 (полная видимость). Объекты в клипе с установленным _alpha в 0 остаются активными, даже если полностью невидимы. Например, кнопка в мувике с нулевым _alpha преспокойно может быть кликнута.
На пример
Следующий пример показывает, что после клика по кнопке свойство _alpha экземпляра star устанавливается в 30%:
on(release) {
setProperty(star._alpha = 30);
}
или
on(release) {
star._alpha = 30;
}
_visible
Синтаксис
instancename._visible
instancename._visible = Boolean;
Аргументы
Boolean Значения true или false, определяющие будет ли клип видим или нет.
Описание
Свойство; определяет будет ли видим муви-клип, указанный в аргументе instancename. Невидимый мувик является недоступным для пользователя. Например, кнопки в муви-клипе со значением _visible равным false, не могут быть нажаты.
Еще Вопросы ЕСТЬ ;)
ВЫВОДЫ.
_alpha = 0 сделает мувик просто невидимым
_visible = 0 сделает мувик вопервых невидимым во вторых не активным в третьих графика для это мувика флешем при перерисовке кадров не просчитывается!!!
В случяе необходимости создовать невидимые кнопки способные к нажатию нужно использовать _alpha = 0;
В случяе необходимости создать взаемо заменяемые кнопки к примеру находящиеся друг под другом и имеющие разное назначение _alpha применять запрещяется так как два мувиклипа содержащие кнопки и имеющие свойство _alpha=0 Будут отрабатываться обе кнопки та что имеет нулевую прозрачность и та что не имеет прозрачности вообще.
А если в этой ситуации будут установленны _visible = 1 и _visible = 0 то тогда одна кнопка будет отработана а другая нет
Еще Вопросы ЕСТЬ ;)
Про Альфу я лично даже и не спорил.
Это и Ежу ;) и Сонику ;) и все-всем всем ясно что при Альфе нулевой клип считается. ;)
Но у меня серьезные (пока недоказанные) сомнения про визибл.
Расплодил я значит клипов с мощной анимацией по полю (в каждом из них по 100 клипов полупрозрачных, двигающихся),
всем им визибл нулевой выставил, а что-то тормозит всеравно. Или у меня глюки, или всетаки визибл не полностью отключает мувик. Вот если удаляешь его - это да. А с визиблом=0 даже незнаю. Может есть из официальной доки строка про _это_
Просто интересно.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.