IPB

Здравствуйте, гость ( Вход | Регистрация )

> Реверс
  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
Misogi
сообщение 12.05.2006 - 20:10
Сообщение #1


Новичок
*

Группа: Новичок
Сообщений: 15
Регистрация: 7.04.2006
Пользователь №: 283



Люди.Может это глупый вопрос но все же... У меня есть movieClip который вставлен в кадр основного клипа,можно ли как-нибудь при помощи Action-a проиграть этот movieClip в обратном порядке?? unsure.gif Заранее спасибо rolleyes.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов (1 - 17)
tiHo
сообщение 12.05.2006 - 23:00
Сообщение #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мс)

а в первом примере функция выполняется очень часто, несколько раз в секунду.(какой фпс стока раз и выполняется)

все. пользуйся.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rohan
сообщение 12.05.2006 - 23:50
Сообщение #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();
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MustLive
сообщение 13.05.2006 - 00:00
Сообщение #4


Ветеран конференции
****

Группа: Flash Zone Team
Сообщений: 3935
Регистрация: 10.03.2005
Из: Киев
Пользователь №: 5



Интересный пример Саша.

Misogi, я уже неоднократно отвечал на форуме относительно проигрыша назад (а также в рассылке писал), поэтому стоило по форуму поискать smile.gif. Всем кто задаёт "одни и те же" вопросы, стоит по форуму искать в первую очередь. У меня в примерах речь шла как о проигрыше всей флешки назад, так и для отдельных роликов.

Но хорошо, что tiHo оперативно написал пример кода для этого дела. У меня в коде использовался не clip.gotoAndStop(i), а clip.prevFrame(). И код не такой напряжный (нет i, что упрощает использование и делает код универсальным).

При этом проигрыш назад происходил с fps самой флешки. Вариант с setInterval тоже довольно интересен, и может быть применим для создания различных эффектов.

Пока я писал месадж, и Rohan написал свой пример.

Тоже довольно интересный пример, близкий к тому что я много раз приводил на форуме. Только у меня более AS1-подобный, а у Rohan-а, более AS2-подобный (с заданием прототипа MovieClip.prototype.reverse).

Интересно, а в Флеш 6/МХ это заработает? Т.к. сам никогда не пробовал прототипить. Код интересный, сразу целый метод. Сейчас среди профи это модно smile.gif - сразу методы делать. Подумаю, может в рассылке опишу как-нибудь пример Rohan-а для реверса.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
tiHo
сообщение 13.05.2006 - 00:00
Сообщение #5


тихо-хо :)
****

Группа: Модераторы
Сообщений: 1474
Регистрация: 10.04.2006
Из: Млечный Путь, 3-я планета от Солнца, Россия, Москва, Люблино.
Пользователь №: 293



вечно я все усложняю biggrin.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MustLive
сообщение 13.05.2006 - 00:15
Сообщение #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, всё работает автоматически для любых мувиков).
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
tiHo
сообщение 13.05.2006 - 00:23
Сообщение #7


тихо-хо :)
****

Группа: Модераторы
Сообщений: 1474
Регистрация: 10.04.2006
Из: Млечный Путь, 3-я планета от Солнца, Россия, Москва, Люблино.
Пользователь №: 293



ну что Rohan, довыпендривался biggrin.gif biggrin.gif laugh.gif laugh.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rohan
сообщение 13.05.2006 - 11:07
Сообщение #8


Активный участник
***

Группа: Пользователь
Сообщений: 300
Регистрация: 23.04.2006
Из: Днепропетровск, Украина
Пользователь №: 317



ЭЭЭ! smile.gif Че это не работает? Мля, пока не написано "class A extends B implements C" в отдельном *.as - файле, все это счастье - AS1. У меня Flash MX2004, поставил в Publish settings публиковать под 6-й плеер, выбрал Action Script 1 (на всякий случай) - и все __работает__. Вы точно правильно это юзали? rolleyes.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
tiHo
сообщение 13.05.2006 - 12:16
Сообщение #9


тихо-хо :)
****

Группа: Модераторы
Сообщений: 1474
Регистрация: 10.04.2006
Из: Млечный Путь, 3-я планета от Солнца, Россия, Москва, Люблино.
Пользователь №: 293



обижаеш biggrin.gif laugh.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MustLive
сообщение 13.05.2006 - 21:01
Сообщение #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();
    }
}


Ну и у Саши я вижу тоже код не работает, так что значит мои подозрения насчёт метода (что есть проблемы с реализацией в виде метода) подверждаются wink.gif

Поэтому пока будем юзать или мой метод (в виде функции на кадр), или передаланный вариант Рохана (в виде функции на объект).
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rohan
сообщение 14.05.2006 - 00:21
Сообщение #11


Активный участник
***

Группа: Пользователь
Сообщений: 300
Регистрация: 23.04.2006
Из: Днепропетровск, Украина
Пользователь №: 317



Таак... Еще раз... Делаем мувиклип - одна штука, кинаем его на стейдж, даем ему имя myclip в первом и единственном фрейме (че усложнять) вставляем код MovieClip.prototype... , затем здесь же пишем myclip.reverse(); В чем вообще может быть проблема? Такое не может не работать - я лично это проверил rolleyes.gif Все просто отлично работает... blink.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
MustLive
сообщение 14.05.2006 - 01:52
Сообщение #12


Ветеран конференции
****

Группа: Flash Zone Team
Сообщений: 3935
Регистрация: 10.03.2005
Из: Киев
Пользователь №: 5



Rohan - не работает smile.gif В том то и дело.

Клип и код проще некуда, один фрейм, а не пашет.

MovieClip.prototype вставлял и в кадр сцены, и в as файл, чего только не пробовал - и в 6/мх и в 8 - не заработало. Нагло не работает. Хотя по идее всё должно работать.

...

Ещё раз зашёл в 8й флеш. Код всё тот же, в кадре всё что и раньше, клип mc.

Опять mc.reverse. Всё так же. На всякий случай повторно назвал клип mc. И заработало! Во блин - наверное там имя содержало кириллическую "с" или ещё какой-то глюк. Вот гадость - столько времени убил и наморочился с прототипом. Мутный глюк с именем (откуда там взяться не той букве в имени клипа).

Ну с проблемой разобрались. Но это всё касательно 8 флеша.

В 6м не пашет этот код (там с прототипами как-то по другому нужно писать). При этом если из 8го экспортить в 6й формат, то пашет, даже если AS1 поставить (редактор сам преобразует код как нужно). А вот в редакторе 6/МХ код не работает.

Поэтому для совместимости со старыми редакторами рекомендую использовать мой код №1 (с getBack) или мой код №2 (ремейк кода Рохана).
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rotwang
сообщение 17.05.2009 - 15:16
Сообщение #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?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rotwang
сообщение 19.05.2009 - 14:15
Сообщение #14


Активный участник
***

Группа: Пользователь
Сообщений: 231
Регистрация: 28.02.2009
Из: Тюмень
Пользователь №: 9145



Где же chingachgoog? wink.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 19.05.2009 - 15:43
Сообщение #15


Ветеран конференции
****

Группа: Пользователь
Сообщений: 785
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



А что вы хотите? Вы при нажатии на кнопку назад подписываетесь на nazadDownListener, который в свою очередь подписывает пленку на enterFrameHandler.
Было бы логично предположить обратную последовательность при отпускании кнопки назад, но вместо этого в nazadUpListener зачем-то прописывается stop()...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rotwang
сообщение 19.05.2009 - 17:36
Сообщение #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
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
chingachgoog
сообщение 19.05.2009 - 18:00
Сообщение #17


Ветеран конференции
****

Группа: Пользователь
Сообщений: 785
Регистрация: 27.02.2009
Из: Moscow
Пользователь №: 9144



Цитата(Rotwang @ 19.05.2009 - 18:36) *
То есть вы хотите сказать, что надо как-то удалить enterFrameHandler?


"Как-то" не надо. smile.gif
Если есть addEventListener, то есть и removeEventListener
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Rotwang
сообщение 19.05.2009 - 18:05
Сообщение #18


Активный участник
***

Группа: Пользователь
Сообщений: 231
Регистрация: 28.02.2009
Из: Тюмень
Пользователь №: 9145



chingachgoog, пока я редактировал свое сообщение, вы уже новое успели написать laugh.gif.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 17.11.2010 - 16:43