
Код AS1/AS2:
stop();
import mx.transitions.Tween;
import mx.transitions.easing.*;
Stage.scaleMode = "noScale";
_root.buttons.but01._quality = "BEST";
//Проверяем, если переменная varStopFlag не была ещё создана, то создаём её.
//Это необходимо потому, что в ходе проигрывания мы будем проматывать вперёд/назад
//нашу флешку и, так как весь код находится в первом кадре, он будет периодически
//срабатывать. И если в ходе проигрывания мы нажали STOP и у нас varStopFlag станет true,
//то без этой проверки, проигрывание первого кадра опять сделает из varStopFlag false.
if (varStopFlag == undefined) {
//Переменная, которая будет фиксировать, остановлена у нас флешка сейчас, или нет
var varStopFlag:Boolean = false;
//Переменная, которая будет фиксировать, включено ли воспроизведение задом наперёд
var varReversFlag:Boolean = false;
}
//События MovieClip объектов, что это такое?
//на самом деле сталкиваемся мы с ними почти накаждом сайте, не подозревая того
//сами. Если вы навели на Movie Clip, то тут же срабатывает событие onRollOver.
//Нажать — onPress. Нажать и отпустить — onRelease. Убрать курсор мышки с
//объекта — onRollOut;
//Очень тяжело представить себе интерактивный фильм (читай флешку), в котором
//бы полноценно участвовал пользователь, без использования этих событий.
//Есть определённый список событий, которые по умочанию встроены в те или иные
//объекты.
//Чтобы отследить событие, нуждно задать ему какое-тодействие.
//Так же при надобности всегда можно удалить то, или иное событие.
//
stop_mc._visible = false;
menu._alpha = 0;
menu._xscale = menu._yscale=90;
//onRollOver
//Событие, которое будет срабатывать при наведении мышки на клип
menu.onRollOver = function() {
//Если Была запущена функция ПРОСМОТРА-ЗАДОМ-НАПЕРЁД удаляем её (см. ниже)
clearInterval(_root.buttons.but01.revers_int);
//Если до этого флешка была остановлена и переменная varStopFlag была равна true
//делаем её равной flase, т.к. проигрывание флешки возобновляется.
_root.buttons.but01.varStopFlag = false;
//Если флешка до этого проигрывалась задом наперёд, и переменная varReversFlag была
//равна true, то делаем её равной false, т.к. возобновляется нормальное воспроизведение
_root.buttons.but01.varReversFlag = false;
//В момент нажатия делаем фон немного прозрачней
this.red_mc._alpha = 75;
//Начинаем проигрывание
_root.buttons.but01.play();
};
menu.onPress = function() {
_root.gotoAndPlay(66);
};
//onReleaseOutside
//Событие, которое будет срабатывать при НАЖАЛ-ОТПУСТИЛ за пределами объекта,
//т.е. если вы нажали на клип, зажали мышку, увели мышку за пределы клипа,
//то сработает именно это событие
//onRollOut
//Событие, которое будет срабатывать, когда ты уведёшь мышку с клипа
//Одни и те же действия можно присваиватьразным событиям.
//Синтаксис таков:
//событие_1 = событие_2 = function(){ действие }
//
//так же действия одного события можно задать и другому слудующим образом:
//событие_1=событие_2();
//Причём, скобки после событие_2 ОБЯЗАТЕЛЬНЫ.
//Кто не понял вместо событие_1 исобытие_2 можно подставить любые другие
//события объекта, навпример onRelease, onRollOVer и т.д.
menu.onRollOut = menu.onReleaseOutside=function () {
//Если до этого уже было запущено проигрывание ЗАДОМ-НАПЕРЁД, то удаляем его, чтобы
//не было повторного вызова
clearInterval(_root.buttons.but01.revers_int);
_root.buttons.but01.varStopFlag = false;
//Делаем varReversFlag равной true, т.к. мы запускаем проигрывание задом наперёд
_root.buttons.but01.varReversFlag = true;
this.red_mc._alpha = 75;
//Останавливаем обыкновенное проигрывание
_root.buttons.but01.stop();
//Запускаем функцию, проигрывания флешки, задом наперёд
//Запись setInterval(revers_func, 1000/30); означает, что функция revers_func (см. ниже)
//будет вызываться 30 раз в одну секунду. Число 1000 означает 1 секунду, т.к.
//в setInterval время задаётся в миллисекундах.
//1 секунда = 1000 миллисекунд
_root.buttons.but01.revers_int = setInterval(revers_func, 1000/30);
};
//ФУНКЦИЯ ПЕРЕМОТКИ КАДРОВ НАЗАД
function revers_func() {
//Проверяем, если текущий кадр флешки не равен первому (1), то переходим на
//предыдущий кадр.
//Если же текущим кадром является первый (1), то переходим к последнему кадру,
//делая перемотку циклической
if (_root.buttons.but01._currentframe != 1) {
_root.buttons.but01.gotoAndStop(_root.buttons.but01._currentframe-1);
} else {
_root.buttons.but01.stop();
}
}
function forward_func() {
//Проверяем, если сейчас проигрывается непоследний кадр флешки, то переходим к
//следующемукадру.
//Если сейчас проигрывается последний кадр, то переходим к первому, и делаем
//перемотку замкнутой по кругу.
if (_root._currentframe != _root._totalframes) {
_root.gotoAndStop(_root._currentframe+1);
} else {
_root.gotoAndStop(1);
}
}
//**
у меня есть 2 комплекта кнопок с этим кодом в одной флехе: один комплект это навигация по фреймам мувика, а второй внутри одного из фреймов и он там именно для него.
И проблема в том, что когда я запускаю флешку и перехожу в тот фрейм (с помощью кнопок навигации) где второй комплект внутренних кнопок, то с первого раза все работает отлично. Но стоит мне полазить по другим фреймам и вновь вернуться в этот, то те кнопки (которые внутри фрейма) на которые я в прошлом нажимал перестают работать, и работаю только те, которые не нажимались при первом заходе в этот фрейм. В чем трабл может быть? ТОгда как с кнопками навигации все ОТЛ.