Просмотр полной версии : проиграть мув клип с конца в начало
есть возможности в AS
flash 5.0
заранее благодарен!
на клип с анимацией ставишь код
onClipEvent (enterFrame) {
if (this._currentframe == 1) {
this.gotoAndStop (this._totalframes);
} else {
this.gotoAndStop (this._currentframe - 1);
}
}
В самом клипе в первом кадре ставишь stop();
Whatsername
01.08.2005, 14:36
Очевидно, что stop() в первом кадре нужен для того, чтобы не прорисовывать этот кадр. Только мне не понятно как это работает, ведь есть проверка
this._currentframe == 1
дающая при выводе первого кадра true. И есть подынструкция
this.gotoAndStop(this._totalframes)
напрявляющая головку в последний кадр, не прорисовывая настоящий.
iNils, разреши, пожалуйста, этот казус в моей голове.
В примере есть клип с анимацией на 6 кадров.
Если убрать stop то последовательность кадров 1 6 5 4 3 2 1 6 ....
Со stop 6 5 4 3 2 1 6 ....
Очевидно, что stop() в первом кадре нужен для того, чтобы не прорисовывать этот кадр.
интересная теория
На самом деле без stop сразу начинается проигрываение ролика и код проверки срабатывает только на втором кадре. Это можно увидеть если вставить trace(this._currentframe) перед if (this._currentframe == 1) {.
Whatsername
02.08.2005, 12:12
вставить trace(this._currentframe) перед if (this._currentframe == 1) {.
Это работает. Спасибо за ответ. Но я таки не вникаю. Сперва выполняется код _root, потом клипа, потом обработчика события клипа. Затем кадр рисуется. Так?
UPD: а еще твой исходник без *.fla, но все равно спасиба =)
Сперва выполняется код _root, потом клипа, потом обработчика события клипа. Затем кадр рисуется. Так?
Легко проверить. В руте пишешь trace ("root1"), слоем ниже клип с кодом onClipEvent(load){trace("clipEvent")} и еще слоем ниже trace ("root2"). Внутри клипа trace ("clipInside"). Запускаешь и смотришь последовательность.
а еще твой исходник без *.fla, но все равно спасиба =) Бывает :)
2 D12
фигурные скобочки забыли поставить в if
не понял что такое
go и !go разъясните плиз....
2 iNils
умом понимаю,что код верен и должен работать...но на практике не фига у меня не работает (почему-то)..может скинете fla шку
Whatsername
03.08.2005, 14:22
Не понимать я твой подход.
Пытаюсь проверить исполняется ли enterFrame при входе в первый кадр, вроде бы и не исполняется, и это все объясняет. Раскрой мне веки.
А потом, первый такт смены кадров происходит ~ раз в 10 быстрее установленного. Не замечал?
Вот файл. Уменьшил fps до 1, чтобы успеть увидеть что происходит. Запусти с stop() и без него. А я сейчас напишу логику действий.
Вариант 1. Без stop();
Лог при запуске:
_root
сработал _root
код кадра 1, _currentframe : 1
сработал код на первом кадре внутри клипа, текущий кадр 1. stop нет, поэтому головка воспроизведения переходт дальше
enterFrame, _currentframe : 2
сработал код на клипе внутри enterFrame, но текущий кадр уже 2. срабатывает код this.gotoAndStop (this._currentframe - 1), то есть со второго кадра переходим на 1
код кадра 2, _currentframe : 1
... но надо обработать код и второго кадра, хотя головка уже перескочила на первый и поэтому ...
код кадра 1, _currentframe : 1
... опять срабатывает код первого кадра
... следущие кадры
enterFrame, _currentframe : 1
enterFrame, _currentframe : 10
enterFrame, _currentframe : 9
Вариант 2. С stop();
Лог при запуске:
_root
сработал _root
код кадра 1, _currentframe : 1
сработал код на первом кадре внутри клипа, текущий кадр 1. stop есть, поэтому головка воспроизведения не двигается
enterFrame, _currentframe : 1
сработал код на клипе внутри enterFrame. срабатывает код this.gotoAndStop (this._totalframes), то есть со первого кадра переходим на 10
если бы внутри клипа мы поставили (я забыл) на 10 кадр код trace("код кадра 10, _currentframe : " + this._currentframe), то тут у нас был бы еще лог:
код кадра 10, _currentframe : 10
... следущие кадры
enterFrame, _currentframe : 10
enterFrame, _currentframe : 9
enterFrame, _currentframe : 8
Whatsername
03.08.2005, 15:21
iNils, ты чудо! Спасибо.
Вот это меня вводит в ступор:
код кадра 2, _currentframe : 1
UPD: запостил, не видя твоего сообщения. Сейчас изучу твои поиски. Большое спасибо.
Whatsername
03.08.2005, 17:46
iNils, прими мои лобзанья =))
Огромное спасибо!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.