PDA

Просмотр полной версии : Не работает конструкция mc.gotoAndPlay() на главном тамлайне :(


drobinkin
22.02.2008, 01:52
На сцене в главном таймлайне, начиная с определенного фрейма лежит клип с именем cc1. Клип положен вручную, а не погружен программно.
В этом фрейме пишу

cc1.gotoAndPlay('start');
stop();


Однако че-то не работает :( В смысле, клип сс1 не проигрывается. Ни со стопом, ни без.
Подскажите, пожалуйста, где я туплю, ибо вопрос по идее банальнейший, однако ступор у меня какой-то.

MrPoma
22.02.2008, 04:19
Либо не видит мувик cc1, либо лэйбл 'start'.

drobinkin
22.02.2008, 05:27
Либо не видит мувик cc1, либо лэйбл 'start'.

дык пробовал и так

cc1.gotoAndPlay(2)

тоже не идет. На втором кадре и стоит метка 'start'

А сам мувик пробовал менять тип на graphics - тада играет

Есть еще мысли?

iNils
22.02.2008, 05:42
Исходник покажите.

drobinkin
22.02.2008, 05:52
я там походу еще один оператор добавил - onEnterFrame - уже вроде сдвинулось, но все равно еще не то

iNils
22.02.2008, 05:55
Когда надоест теряться в догадках, выкладывайте исходник.

drobinkin
22.02.2008, 06:48
так уже давно :) выложил

iNils
22.02.2008, 07:03
Ага. Причина была в stop() в первом кадре cc1.
Флеш выполняет код последовательно от предка к потоммкам, это значит, что cc1.gotoAndPlay выполнится раньше, чем stop внутри cc1. В итоге последовательность действий внутри cc1 такая:
1A. Перейти на кадр 'start'
1Б. Начать анимацию
2. Остановить анимацию

drobinkin
22.02.2008, 07:09
Ну по идее мне так и надо.
Вот только сс1 зацикливается почему-то. А должен один раз проиграться, да и то до половины.

iNils
22.02.2008, 07:23
Ну по идее мне так и надо.
Не надо :) Это все происходит в течении одного кадра.
А не "начать анимацию" - 1 кадр - 2 кадр -... - "остановить анимацию". Если надо просто перейти на какойто кадр без воспроизведения, есть gotoAndStop.

А в текущей реализации, у вас 30 раз в секнду вызывается cc1.gotoAndPlay('start');

drobinkin
22.02.2008, 07:31
Фух, че-то вообще крыша едет уже :)
Как же мне сделать, чтобы в основном таймлайние при достижении кадра с сс1 последний проигрался до своей середины и остановился (перед свой меткой "финиш")?

iNils
22.02.2008, 07:40
Убрать stop() из первого его кадра.
А в руте убрать onEnterFrame

drobinkin
22.02.2008, 07:47
Вот, блин
У меня есть еще несколько мувиков с такой же организацией. На них всех ссылаются кнопки навигации. Презентация вобщем. Отсюда и использование стопа в первом кадре. Просто надо чтобы при старте всей презентации после интро (первые 30 кадров на главном таймлайне) запустился один из этих мувиков, в частности сс1. Не хотелось просто делать два варианта одного и того же мувика - типа, один для начала презентации, а второй для использования в навигации.

upd

Хм, сделал так в основной презентации, т.е. убрал стоп только у сс1, ну и онЭнтерФрейм - вроде как работает пока. Вобщем, погонять надо все переходы.

Спасибо большое за участие и за помощь :)
А где же тут кнопка "спасибо" или плюсик?

iNils
22.02.2008, 08:00
Можно в руте указать ссылку на мувик
mcLink = cc1, который имеет право проигрывать сразу.
Тогда надо во всех мувиках наподии cc1 написать
if (this != _level0.mcLink) {
stop ();
} else {
gotoAndPlay ('start')
}
И из рута gotoAndPlay ('start') убрать.

"Плюс" у нас означает нарушение правил.

drobinkin
22.02.2008, 15:24
iNils, спасибо, обязательно попробую