![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Новичок ![]() Группа: Новичок Сообщений: 15 Регистрация: 7.04.2006 Пользователь №: 283 ![]() |
Люди.Может это глупый вопрос но все же... У меня есть movieClip который вставлен в кадр основного клипа,можно ли как-нибудь при помощи Action-a проиграть этот movieClip в обратном порядке??
![]() ![]() |
|
|
![]() |
![]()
Сообщение
#2
|
|
![]() тихо-хо :) ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1474 Регистрация: 10.04.2006 Из: Млечный Путь, 3-я планета от Солнца, Россия, Москва, Люблино. Пользователь №: 293 ![]() |
Код i = 6; function gg() { i--; clip.gotoAndStop(i); if (i <= 1) { i = 6; } } onEnterFrame = function () { gg(); }; тока быстро очень крутит. но зато назад. а чтобы помедленее можно установить интервал вызова функции gg() вот так: Код i = 6; function gg() { i--; clip.gotoAndStop(i); if (i <= 1) { i = 6; } } setInterval(gg,500) подробнее: i: указывает на количество кадров в клипе clip. функция setInterval(), устанавливает скока раз в секунду будет выполнятся gg(). в нашем случае каждые полсекунды(500мс) а в первом примере функция выполняется очень часто, несколько раз в секунду.(какой фпс стока раз и выполняется) все. пользуйся. |
|
|
![]()
Сообщение
#3
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователь Сообщений: 300 Регистрация: 23.04.2006 Из: Днепропетровск, Украина Пользователь №: 317 ![]() |
Код MovieClip.prototype.reverse = function() { this.gotoAndStop(this._totalframes); this.onEnterFrame = function() { if(this._currentframe==1) this.gotoAndStop(this._totalframes); else this.prevFrame(); } } Юзать как [нужный клип].reverse(); |
|
|
![]()
Сообщение
#4
|
|
Ветеран конференции ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 3935 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
Интересный пример Саша.
Misogi, я уже неоднократно отвечал на форуме относительно проигрыша назад (а также в рассылке писал), поэтому стоило по форуму поискать ![]() Но хорошо, что tiHo оперативно написал пример кода для этого дела. У меня в коде использовался не clip.gotoAndStop(i), а clip.prevFrame(). И код не такой напряжный (нет i, что упрощает использование и делает код универсальным). При этом проигрыш назад происходил с fps самой флешки. Вариант с setInterval тоже довольно интересен, и может быть применим для создания различных эффектов. Пока я писал месадж, и Rohan написал свой пример. Тоже довольно интересный пример, близкий к тому что я много раз приводил на форуме. Только у меня более AS1-подобный, а у Rohan-а, более AS2-подобный (с заданием прототипа MovieClip.prototype.reverse). Интересно, а в Флеш 6/МХ это заработает? Т.к. сам никогда не пробовал прототипить. Код интересный, сразу целый метод. Сейчас среди профи это модно ![]() |
|
|
![]() ![]()
Сообщение
#5
|
|
![]() тихо-хо :) ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1474 Регистрация: 10.04.2006 Из: Млечный Путь, 3-я планета от Солнца, Россия, Москва, Люблино. Пользователь №: 293 ![]() |
вечно я все усложняю
![]() |
|
|
![]()
Сообщение
#6
|
|
Ветеран конференции ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 3935 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
Неа.
Во флеш 6/МХ не работает метод Rohan-а. Не реверсит через метод reverse мувиклип. Поэтому для 6/МХ можно применять мой реверс: Код this.onEnterFrame = function() { if (getBack){ if (mc._currentframe <> 1) { mc.prevFrame(); } else { getBack = false; } } } mc.gotoAndStop(mc._totalframes); getBack = true; Проигрывает не зациклено - только один раз с конца. mc.gotoAndStop(mc._totalframes) - для установки в конец ролика (т.е. без каких-либо переменных i, всё работает автоматически для любых мувиков). |
|
|
![]() ![]()
Сообщение
#7
|
|
![]() тихо-хо :) ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1474 Регистрация: 10.04.2006 Из: Млечный Путь, 3-я планета от Солнца, Россия, Москва, Люблино. Пользователь №: 293 ![]() |
ну что Rohan, довыпендривался
![]() ![]() ![]() ![]() |
|
|
![]()
Сообщение
#8
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователь Сообщений: 300 Регистрация: 23.04.2006 Из: Днепропетровск, Украина Пользователь №: 317 ![]() |
ЭЭЭ!
![]() ![]() |
|
|
![]() ![]()
Сообщение
#9
|
|
![]() тихо-хо :) ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1474 Регистрация: 10.04.2006 Из: Млечный Путь, 3-я планета от Солнца, Россия, Москва, Люблино. Пользователь №: 293 ![]() |
обижаеш
![]() ![]() |
|
|
![]()
Сообщение
#10
|
|
Ветеран конференции ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 3935 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
Rohan
Ничего не получилось. Ни во флеше 6, ни в 8. Как я уже говорил, прототипить ранее не пробовал, встречал подобный код в различных работах, но сам не пробовал подобное писать, откладывал до лучших времён. Сейчас вот попробовал сам запрототипить - создать свой метод. И что я не делал, никак этот код не заработал - ни в 6, ни в 8 флеше. И в кадр (а прототипить можно и в кадре, как я знаю по рабочим примерам), и в as-файл, и классами пробовал и применять к протитипу реверс-методу функцию с другого класса, в общем никак метод не заработал. Долго с ним морочился, но рабочим метод сделать не удалось. Зато если не делать методом, а просто код на объект поместить, то всё хорошо работает (и в 6/8 флеше). Код onClipEvent (load) { this.gotoAndStop(this._totalframes); this.onEnterFrame = function() { if(this._currentframe==1) this.gotoAndStop(this._totalframes); else this.prevFrame(); } } Ну и у Саши я вижу тоже код не работает, так что значит мои подозрения насчёт метода (что есть проблемы с реализацией в виде метода) подверждаются ![]() Поэтому пока будем юзать или мой метод (в виде функции на кадр), или передаланный вариант Рохана (в виде функции на объект). |
|
|
![]()
Сообщение
#11
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователь Сообщений: 300 Регистрация: 23.04.2006 Из: Днепропетровск, Украина Пользователь №: 317 ![]() |
Таак... Еще раз... Делаем мувиклип - одна штука, кинаем его на стейдж, даем ему имя myclip в первом и единственном фрейме (че усложнять) вставляем код MovieClip.prototype... , затем здесь же пишем myclip.reverse(); В чем вообще может быть проблема? Такое не может не работать - я лично это проверил
![]() ![]() |
|
|
![]()
Сообщение
#12
|
|
Ветеран конференции ![]() ![]() ![]() ![]() Группа: Flash Zone Team Сообщений: 3935 Регистрация: 10.03.2005 Из: Киев Пользователь №: 5 ![]() |
Rohan - не работает
![]() Клип и код проще некуда, один фрейм, а не пашет. MovieClip.prototype вставлял и в кадр сцены, и в as файл, чего только не пробовал - и в 6/мх и в 8 - не заработало. Нагло не работает. Хотя по идее всё должно работать. ... Ещё раз зашёл в 8й флеш. Код всё тот же, в кадре всё что и раньше, клип mc. Опять mc.reverse. Всё так же. На всякий случай повторно назвал клип mc. И заработало! Во блин - наверное там имя содержало кириллическую "с" или ещё какой-то глюк. Вот гадость - столько времени убил и наморочился с прототипом. Мутный глюк с именем (откуда там взяться не той букве в имени клипа). Ну с проблемой разобрались. Но это всё касательно 8 флеша. В 6м не пашет этот код (там с прототипами как-то по другому нужно писать). При этом если из 8го экспортить в 6й формат, то пашет, даже если AS1 поставить (редактор сам преобразует код как нужно). А вот в редакторе 6/МХ код не работает. Поэтому для совместимости со старыми редакторами рекомендую использовать мой код №1 (с getBack) или мой код №2 (ремейк кода Рохана). |
|
|
![]()
Сообщение
#13
|
|
Активный участник ![]() ![]() ![]() Группа: Пользователь Сообщений: 231 Регистрация: 28.02.2009 Из: Тюмень Пользователь №: 9145 ![]() |
Я написал код для прокручивания внутренней анимации мувика plenka вперед и назад:
Код plenka.stop(); var nnn:int = plenka.currentFrame; vpered.addEventListener(MouseEvent.MOUSE_DOWN, vperedDownListener); vpered.addEventListener(MouseEvent.MOUSE_UP, vperedUpListener); function vperedUpListener(e:MouseEvent):void{ plenka.stop(); trace(plenka.currentFrame); } function vperedDownListener(e:MouseEvent):void{ plenka.gotoAndStop(plenka.currentFrame); //addEventListener(Event.ENTER_FRAME, Play); //function Play(e:Event):void{ trace(plenka.currentFrame); plenka.play(); } //////////////////////////// nazad.addEventListener(MouseEvent.MOUSE_DOWN, nazadDownListener); nazad.addEventListener(MouseEvent.MOUSE_UP, nazadUpListener); function nazadUpListener(e:MouseEvent):void{ plenka.stop(); trace(plenka.currentFrame); } function nazadDownListener(e:MouseEvent):void{ plenka.addEventListener(Event.ENTER_FRAME, enterFrameHandler); function enterFrameHandler(event :Event):void{ if (plenka.currentFrame == 1){ plenka.gotoAndStop(plenka.totalFrames) }else{ plenka.prevFrame(); } } } Для прокручивания вперед все работает, при нажатии и удержании кнопки мувик проигрывается вперед. При отпускании останавливается. Вот код, отвечающий за проигрывание назад Код nazad.addEventListener(MouseEvent.MOUSE_DOWN, nazadDownListener); nazad.addEventListener(MouseEvent.MOUSE_UP, nazadUpListener); function nazadUpListener(e:MouseEvent):void{ plenka.stop(); trace(plenka.currentFrame); } function nazadDownListener(e:MouseEvent):void{ plenka.addEventListener(Event.ENTER_FRAME, enterFrameHandler); function enterFrameHandler(event :Event):void{ if (plenka.currentFrame == 1){ plenka.gotoAndStop(plenka.totalFrames) }else{ plenka.prevFrame(); } } } При его выполнении начинается прокрутка назад, но когда отпускаешь кнопку, мувик не останавливается. И крутится с все возрастающей скоростью. Может быть при отпускании надо как-то избавляться от Event.ENTER_FRAME? |
|
|
![]()
Сообщение
#14
|
|
Активный участник ![]() ![]() ![]() Группа: Пользователь Сообщений: 231 Регистрация: 28.02.2009 Из: Тюмень Пользователь №: 9145 ![]() |
Где же chingachgoog?
![]() |
|
|
![]()
Сообщение
#15
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 785 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
А что вы хотите? Вы при нажатии на кнопку назад подписываетесь на nazadDownListener, который в свою очередь подписывает пленку на enterFrameHandler.
Было бы логично предположить обратную последовательность при отпускании кнопки назад, но вместо этого в nazadUpListener зачем-то прописывается stop()... |
|
|
![]()
Сообщение
#16
|
|
Активный участник ![]() ![]() ![]() Группа: Пользователь Сообщений: 231 Регистрация: 28.02.2009 Из: Тюмень Пользователь №: 9145 ![]() |
Цитата Было бы логично предположить обратную последовательность при отпускании кнопки назад Вот, дошло до меня наконец-то! Код function pravoDownListener(e:MouseEvent):void{ plenka.addEventListener(Event.ENTER_FRAME, enterFrameHandler); function enterFrameHandler(event :Event):void{ if (plenka.currentFrame == 1){ plenka.gotoAndStop(plenka.totalFrames) }else{ plenka.prevFrame(); pravo.addEventListener(MouseEvent.MOUSE_UP, pravoUpListener); function pravoUpListener(e:MouseEvent):void{ plenka.removeEventListener(Event.ENTER_FRAME, enterFrameHandler); trace(plenka.currentFrame); } } } } Я просто прячу в pravoDownListener pravo.addEventListener(MouseEvent.MOUSE_UP, pravoUpListener); и функцию pravoUpListener, в которой прописываю удаление Event.ENTER_FRAME. И тогда работает! Сообщение отредактировал Rotwang - 19.05.2009 - 18:02 |
|
|
![]()
Сообщение
#17
|
|
![]() Ветеран конференции ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 785 Регистрация: 27.02.2009 Из: Moscow Пользователь №: 9144 ![]() |
|
|
|
![]()
Сообщение
#18
|
|
Активный участник ![]() ![]() ![]() Группа: Пользователь Сообщений: 231 Регистрация: 28.02.2009 Из: Тюмень Пользователь №: 9145 ![]() |
chingachgoog, пока я редактировал свое сообщение, вы уже новое успели написать
![]() |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 17.11.2010 - 16:43 |