PDA

Просмотр полной версии : Блокировка кнопка в нужном кадре


Nemoxp
23.05.2006, 18:36
Уважаемые участники форума! Я, как начинающий пользователь флеш технологий и не достаточно хорошо разбирающийся в программе Макромедиа Флеш, прошу у вас помощи в расшифровке скрипта, использующийся для управления кнопкой во флеш ролике. Суть такова: кнопка к которой он применяется, в программе на стадии разработки ролика, содержится не в каждом фрейме, а распространяется на все сразу, как бы одним сплошным роликом лежит в отдельном слое; этот скрипт проще говоря, можно найти в одном из шаблонов презентаций в самой программе (File>>New>>Template>>Presentations), который вписан в первый фрейм самого верхнего слоя "actions". (на сколько я разобрался, кнопки листания страниц презентации закреплены в этом скрипте и отключаются автоматически кнопки "вперед" и "назад" ,в зависимости твоего местонахождении в презентации, будь то первая или последняя ее страницы). Я прошу вас в общих чертах описать принцип действия скрипта, но желательно хотелось подробнее; почему "отключаются" кнопки и какое именно место скрипта управляет данным процессом. Заранее великодушно благодарю и привожу данный скрипт ниже!


// If not defined yet,
if (isLoaded == undefined) {

// Routine to move playhead to a new frame
var updateFrame = function (inc) {

var newFrame = _currentframe + inc;
gotoAndStop(newFrame);

if (_root._currentframe == 1) {
backBtn._alpha = 50;
backBtn.enabled = false;
} else {
backBtn._alpha = 100;
backBtn.enabled = true;
}
if (_root._currentframe == _root._totalframes) {
forwardBtn._alpha = 50;
forwardBtn.enabled = false;
} else {
forwardBtn._alpha = 100;
forwardBtn.enabled = true;
}
}


// When the forward button is pressed
forwardBtn.onPress = function () {
updateFrame(1);
}

// When the back button is pressed
backBtn.onPress = function () {
updateFrame(-1);
}

// When the keyboard keys are pressed
var keyListener = new Object();
keyListener.onKeyDown = function () {
if (Key.isDown(37)) {
// Left
updateFrame(-1);
} else if (Key.isDown(38)) {
// Up
updateFrame(-(_currentframe-1));
} else if (Key.isDown(39)) {
// Right
updateFrame(1);
} else if (Key.isDown(40)) {
// Down
updateFrame(_totalFrames + 1);
}
}
Key.addListener(keyListener);


// Call updateFrame at first to get button states correct at start
updateFrame();
}

// Set loaded flag to prevent redefinition
this.isLoaded = true;
stop();

Usnul
23.05.2006, 23:24
1) код не форматированный (читать сложно)
2) название топика (читай правила)

aksios
23.05.2006, 23:33
Учи англицкий - там все подробно закоментировано, а мы тут не бюро перевода.

FK2703
03.05.2008, 05:59
у меня похожая проблема. Обычная Standard Presentation из Flash 8

Нужно, чтобы на 20ом слайде кнопка "вперёд" была неактивна. Пытался модифицировать вот так:

function updateButtons() {
// Check for first screen condition
if (this.firstSlide == this.currentSlide )
{
backBtn.enabled = false;
backBtn._alpha = 50;
}
else
{
backBtn.enabled = true;
backBtn._alpha = 100;
}

if (this.slide20 = this.currentSlide)
{
forwardBtn.enabled = false;
forwardBtn._alpha = 50;
}

// Check for first screen condition
if (this.lastSlide == this.currentSlide)
{
forwardBtn.enabled = false;
forwardBtn._alpha = 50;
}
else
{
forwardBtn.enabled = true;
forwardBtn._alpha = 100;
}
}

this.revealChild = function ()
{
updateButtons();
}

this.addEventListener("revealChild", this);



в лучшем случае - просто не работает. В худшем - различные ошибки. Что я принципиально делаю не так?


ЗЫ форматировать не получилось из-за того, что движок форума режет отступы(

Fernando Costa
03.05.2008, 22:10
може тутif (this.slide20 = this.currentSlide)

if (this.slide20 == this.currentSlide)

FK2703
03.05.2008, 22:28
уже пробовал( не получается(

FK2703
11.05.2008, 15:17
ещё актуально. Очень(