![]() |
Алгоритм смены свойств для нескольких мувиклипов
ну собственно заголовок и есть вопрос.
Я вот что-то сообразить не могу... Подробнее - есть несколько текстовых полей в которых должен меняться текст - таким образом появляется одни текст, с alpha=0 до 100 и обратно уходит в альфу с некоторого момента его появления например alpha=30 начинает в другом текстовом поле появляться другой текст ну и т.д. т.е. единорвременно должно быть несколько текстов на сцене сам текст береться из массива поля не могу создавать программно если что... т.е. могу но думаю что скорее всего не стоит... |
Ну если не можешь программно, делай ручками…
Я не понимаю твоего вопроса. |
ручками плохо, потому что их много...
ну смотри есть положим 10 текстовых полей с именами tf1 ... tf10 положим в onEnterFrame я запускаю смену альфы для первого как я описал от 0 до 100% мне нужно через некоторое время запустить у второго, затем третьего я не врубаюсь как всем сразу запустить такое т.е. понятно что можно написать к примеру i++; tf1._alpha = i; . . . tfN._alpha = i - 100; но это как то тупо и некрасиво.... |
Циклом побегать? Поставить проверку на _alpha?
В чём проблема-то? for .. in на худой конец. |
решил вчера таки
тоже правда через ж...у хитрую функцию с зависимостью от номера мувика написал, имеетца в виду математическую |
Цитата:
добаляеш свойство, cсылающееся на следующего в цепочке. Говоришь "первый.прячься();" В функции прячься() стоит проверка на какоето условие. Например так: если(пора)this.сосед.прячься(); "сосед" в данном случае - ссылка на объект. Вариант 2 похож, назовем его "каждый знает имя соседа". Каждое экземпляр прописан в доме. "сосед" в данном случае - строка. Код примерно такой: если (пора) дом-где-мы-прописаны[this.сосед].прячься(); Вариант 3 "у каждого по-разному работают часы". Выставляем каждому временной сдвиг и сажаем всем одновременно разный timeOut на вызов этого "прячься" |
я кажется понял, что же нужно сделать...
как по мне - саое простое решение - запускать 1 онентерфрейм и в switch'e проверять что же именно нужно сделать. Примерно так: Код:
var toDo:Number=0;Либо значение toDo можно менять в онЭнтерФрейме - тогда последовательно заполняя варианты switch'a получится своего рода сценарий типа: сейчас играем кадр №1, значит нужно запустить функцию №1, дошли до кадра №21 - запускаем следующую функцию, и так на сколько фантазии хватит =) Еще вариант - сложить все функции в один массив и вызывать их по номеру. Т.е. любая возможная коллизия сопровождается сменой текущего индекса массива, откуда и нужно взять функцию. Но, вообще-то было бы лучше видеть пример, для чего это нужно. А вдруг там всего 2-3 функции и можно все сделать простыми if(){}else{}... |
Можно и так, только неизящно. Энтерфрейм тут тож вроде не причем. Лучше код на мувик вешать, примерно так:
Код:
//где-то на таймлайнеТочно так же пишется fadeIn(). Все должно работать. Цитата:
|
а если их много? лучше братьев именовать по очереди да и все..1.2.3.4 итд
просто поставить условие если последний то запускать первый вот и все, а так прибавлять единицу )) |
2 motor4ik: Все прекрасно будет работать, пока нам не потребуется изменить порядок.
Допустим, у нас открыт 5-й клип. Приложение интерактивно. Юзер кликнул мышкой на кнопке, и его интересует 10-й клип. Я преспокойненько назначаю 5-му следующего clip5.brother = clip10; и запускаю тот же код, а что ты сделаешь?:eek: P.S. немножко неправильно, как я могу знать что открыт именно 5-й? Значит надо чтобы клип открывшись говорил такую фразу _root.activatedClip = this; тогда код на кнопке: _root.activatedClip.brother = clip10; _root.activatedClip.fadeOut(); P.P.S. activatedClip лучше чтобы был строкой, тогда за ним можно будет нормально watch`ить и автоматически запускать смену клипа. |
| Часовой пояс GMT +4, время: 03:21. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.