![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 28
|
Была поставлена задача - удерживая нажатой кнопку "быстрого просмотра" пролистывать мувиклип с шагом в 5 кадров т.е. проигрывать только кадры кратные 5-ти.
При отпускании кнопки продолжать нормальное покадровое проигрывание.
Подскажите пожалуйста, как организовать быстрый просмотр виртуального мувиклипа с удерживанием кнопки? Хотя бы алгоритм. |
|
|||||
|
Регистрация: Nov 2005
Адрес: UA
Сообщений: 326
|
между "реальным" и "виртуальным" мувиком нет никакой разницы.
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Чёто мне так интересно стало, как Вы кадры будете создавать в своем виртуальном мувике. Поделитесь технологией?
Обращаться-то надо к ЗАГРУЖЕННОМУ мувику, это у него есть каррентфрейм и прочие вкусности, это его Вы хотите гонять через пять кадров (представляю этот хаос; впрочем, если это типа масяня то - вперед!). А имя его Вы сами своими руками задаете при загрузке, отчего же не пользуетесь?
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 03.09.2007 в 16:10. |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 28
|
Уважаемому последователю В.Маяковского:
Реальнай клип создаётся в документе *.FLA. Виртуальный же, как я уже сказал вначале (если внимательно читать), создаётся программно методом createEmptyMovieClip(). Уважаемому Wolsh: В моём первом запросе сказано: - "Имеется виртуальный мувиклип "myMC" с загруженным в него SWF" ВСЕМ Спасибо! Разобрался сам. Особенность случая в том, что проверять покадрово нужно рабочий стол, а переходы на фреймы надо делать в мувиклипе. Последний раз редактировалось Vitowd; 03.09.2007 в 16:23. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Очень удивлюсь если ЭТО заработает
Попробуйте прочесть то что Вам написали. А затем - то, что Вы написали.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 28
|
В том то и дело, что именно ЭТО как раз и РАБОТАЕТ. Иначе не сообщал бы. Сначала проверил на работоспособность, а потом опубликовал.
В самом первом сообщении, я как раз и приводил НЕ РАБОТАЮЩИЙ код с _root.myMC.onEnterFrame со всеми его "вкусностями", как об этом позже писали. |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
1) надо правильно обращаться
2) если вы грузите в myMC что-либо, это что-либо вытряхнет из него все переменные и функции. Сажать код на мувик можно по onLoadInit, грузить с помощью MovieClipLoader. |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 28
|
Уважаеммоу г-ну Kikasso:
Премного благодарен за внимательное участие и прятное общение! Я вставил, любезно предоставленный вами код, в свой FLA-документ. К моему огорчению, кнопка быстрой перемотки вперёд перестала работать. Естественно, мне, как махровому чайнику, пока великие пути флеша неисповедимы. Предоставляю исходник RARхивом Вложение 1, в котором код (swfplay01.fla) с моим вариантом работает, а код с вашим (swfplay02[bad].fla) к сожалению не изволит. В чем-то я, несомненно, принципиально не прав. Пожалуйста, не сочтите за труд, гляньте одним глазком на исходнички, подскажите несведущему, где же я оплошал. ".. Я ещё не волшебник. Я только учусь, но дружба позволяет делать всякие чудеса!" - из к/ф "Золушка", реплика пажа. |
|
|||||
|
Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
|
Вы внимательно читаете?
Цитата:
Вот так уже работает: myMC_List.onLoadInit = function(target_MC:MovieClip):Void {
target_MC._x = (Stage.width - target_MC._width) / 2;
target_MC._y = 5;
target_MC.stop();
target_MC.onEnterFrame = function() {
if(_root.frwd ){
var frame = this._currentframe +5;
if(frame > this._totalframes) frame = 1;
this.gotoAndStop (frame);
}
if (_root.rwnd){
var frame = this._currentframe -5;
if(frame < 1) frame = this._totalframes;
this.gotoAndStop (frame);
}
}
// Эта секция кода не нужна:
//_root.myMC.onEnterFrame = function() {...}
Так уже лучше: var mcUrl:String = "swfile.swf";
this.createEmptyMovieClip("myMC", 10);
function onLoadInit(target_MC:MovieClip):Void {
target_MC._x = (Stage.width - target_MC._width) / 2;
target_MC._y = 5;
target_MC.stop();
target_MC.onEnterFrame = loadedClipDoEnterFrame; // без скобок!
}
function loadedClipDoEnterFrame():Void {
if(_root.frwd ){
var frame = this._currentframe +5;
if(frame > this._totalframes) frame = 1;
this.gotoAndStop (frame);
}else if (_root.rwnd){
var frame = this._currentframe -5;
if(frame < 1) frame = this._totalframes;
this.gotoAndStop (frame);
}
}
function onLoadError(target_MC:MovieClip):Void {
target_MC.createTextField("error_txt", 1, 0, 0, 100, 20);
target_MC.error_txt.autoSize = "left";
target_MC.error_txt.text = "Ошибка загрузки клипа с адреса:\n\t" + target_MC._url;
}
var myMC_Load:MovieClipLoader = new MovieClipLoader();
myMC_Load.addListener(this);
myMC_Load.loadClip(mcUrl, myMC);
//Кнопка быстрой перемотки вперёд
var frwd,rwnd:Boolean=false;
_root.btn_forwd.onPress = function() {_root.frwd = true}
_root.btn_forwd.onRelease = function() {_root.frwd = false}
Последний раз редактировалось Kikasso; 05.09.2007 в 10:11. |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 28
|
Уважаеммоу г-ну Kikasso:
Спасибо громадное! P.S. Благодарю за помощь при вылазании из лужи! Вы напомнили мне, что существует старый добрый процедурный тип данных и "объявление функции внутри функции" не должно рушить эстетику кода. Впереди ждут звёзды. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|