PDA

Просмотр полной версии : странная работа gotoAndPlay()


Makcumka
20.01.2007, 13:50
Есть мувик (исходник находится во вложении). Состои из одного кадра. В кадре находятся кнопка и клип field1 (экземпляр клипа Field). Кнопка обрабатывает следующие события:
1. rollOver -> вызывает метод field1.Colored() [field1 должен стать зелёным]
2. rollOut -> вызывет метод field1.unColored() [field1 должен стать белым]
3. press -> вызывает метод field1.Switch() [field1 должен поменять цвет на другой т.е. с белого на зелёный с зелёного на белый]

Смена цвета реализована следующм образом:
Внутри клипа Field есть клип bg_mc (экземпляр клипа Field_bg) содержащий два кадра - на первом кадре изображён белый прямоугольник, на втором кадре изображён зелёный прямоугольник. В обоих кадрах находится скрипт с инструкцией stop();
В единственном кадре клипа Field прописан следующий кодthis.Colored = function() {
this.bg_mc.gotoAndPlay(2);
}

this.unColored = function() {
this.bg_mc.gotoAndPlay(1);
}

this.Switch = function() {
this.bg_mc.play();
}

stop();
При следующей последовательности действий происходит непонятное:
В начальном состоянии field1 белый (всё правильно)
Когда наводишь курсор на кнопку, field1 становиться зелёным (всё правильно)
Когда нажимаешь на кнопку, field1 меняет цвет на белый (всё правильно)
Когда уводишь курсор с кнопки, field1 становиться зелёным, хотя должен оставаться белым!!!:wacko:
В чём причина парадокса? Люди добрые, подскажите!

DarkLight
20.01.2007, 15:01
У меня после увода курсора белый.

silin
20.01.2007, 15:06
поставь gotoAndStop вместо gotoAndPlay

Makcumka
20.01.2007, 18:19
Действительно с gotoAndStop() всё работает. Очень странно почему не работает с gotoAndPlay()... trace показывает что и в том и в другом случае исполняется только один кадр, но разный. У кого-нибудь есть версии почему так происходит.

P.S. Прошлый раз забыл в архив положить исходник, в этот раз в архиве и исходнк и swf-ка.

CorC
20.01.2007, 18:31
потому что оно переходит дальше и там выполняется и педыдущий и следующий код

BACRHR
21.01.2007, 15:12
если сделать gotoAndPlay на тот кадр, в котором ты сейчас находишься,то исполнение пойдет дальше по кадрам (и не важно есть stop в текущем кадре или нету)