![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
Ребята, уже не удобно спрашивать на самом деле, но я уже битые часы бьюсь, не могу догнать, что я не правильно пытаюсь объяснить флэшу. Есть клип внутри основного документа, длиной на 750 кадров. Мне надо взависимости от того какой кадр сейчас играет, направлять стрелочкой на переключение- следующий слайд, или предыдущий. Мои познания выдали мне длинный код в виде
right_btn.addEventListener(MouseEvent.CLICK, nextStep); function nextStep (e:MouseEvent):void { slide_mc.gotoAndPlay(105); } left_btn.addEventListener(MouseEvent.CLICK, prevStep); function prevStep (e:MouseEvent):void { if ( 555 <= slide_mc.currentframe < 705 ) { slide_mc.gotoAndPlay(405); } else if (705 <= slide_mc.currentframe < 750 ) { slide_mc.gotoAndPlay(555); } else if (1 <= slide_mc.currentframe < 105 ) { slide_mc.gotoAndPlay(555); } else if (105 <= slide_mc.currentframe < 255 ) { slide_mc.gotoAndPlay(705); } else if (255 <= slide_mc.currentframe < 405 ) { slide_mc.gotoAndPlay(105); } else (405 <= slide_mc.currentframe < 555 ) { slide_mc.gotoAndPlay(255); } подумал может попробовать switch по схеме var moment:int = slide_mc.currentframe; switch (moment) { case 1 <= moment < 105 : slide_mc.gotoAndPlay(555); } Где я ошибаюсь? есть еще такой момент: в главной сцене прописан код addEventListener(MouseEvent.MOUSE_OUT, playAll ); function playAll(e:MouseEvent):void { slide_mc.play(); logo_mc.play(); addEventListener(MouseEvent.MOUSE_OVER, stopAll); function stopAll(e:MouseEvent):void { slide_mc.stop(); logo_mc.stop(); Это надо привязать к листенеру на наведение на поле флэшки, или на саму кнопку? В первый вараинт я даже не догадываюсь как это сделать, а воторой предпологал что то типо ход мыслей верен? |
|
|||||
|
Вообщем сделайте так:
разбейте свои слайды на отдельные муви клипы. Один слайд - один клип. Затем помещаете все слайды в клип - контенер. Получиться так: Далее в коде заводите переменную, указывающую какой клип сейчас играет: Подписываемся на enterFrame, и следим когда клип доиграет до конца: // внутри EnterFrame: var clip:MovieClip = contaner['clip'+currentPlay]; if(clip.currentframe == clip.totalframe){ nextSlide(); } function nextSlide():void{ // Здесь переключаемся на следующий слайд. }
__________________
Дети не должны знать о своих родителях Последний раз редактировалось Tails; 02.10.2012 в 16:01. |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
Цитата:
тогда надо разрывать код после первого совпадения, а break есть только в switch. Все верно? |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
спасибо, но я изначально рассматривал вариант разбиения на несколько мувиклипов, но у меня картинки сменяются масками., и я не знал как обеспечить такой эффект подругому, как выложить их на 1 таймлайн.
КорДум пока что такие действия вне зоны моего понимания ))) только недавно в флэш влез |
|
|||||
|
pomuс
Применяйте маску в каждом клипе отдельно, или если возможно, примените её сразу к контейнеру в котором лежат все слайды. В любом случае, нужно разбить по контейнерам. Не могу представить причины, из-за которой этого сделать было бы нельзя. Тем способом, что хотите сделать вы (поместить все клипы на один таймлайн) - гиблое дело. Вы лишь пятикратно усложняете себе этим задачу. А что если вас попросят потом сделать один из слайдов чуть длиннее?
__________________
Дети не должны знать о своих родителях |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
Tails да пока я найду способ как мне применять маску к клипу, так чтобы на фоне еще был другой клип, я бы проковырялся фиг знает сколько. Хотя и так не мало. Решил пойти дедовским методом, но чтобы наверняка. В этой флэшке меняться длительность не будет, а если и будет, это поправимо за 5 минут.
На самом деле ваш вараинт наамного прогрессивней, это факт, но я еще не готов его применить, так кк даже не увяжу все то о чем вы писали. P.S. применил к старой схеме оператор switch c поправленым синтаксисом, и с break.. не работает вообще ничего |
|
|||||
|
Switch не для этих целей. Вы проверяете диапазон, а свитч для сравнения конкретных значений.
Вот ваше дедовское условие: function prevStep (e:MouseEvent):void { var frame:int = slide_mc.currentframe; if (frame >= 1 && frame < 105){ // слайд 1 slide_mc.gotoAndPlay(555); }else if(frame >= 105 && frame < 255){ // слайд 2 slide_mc.gotoAndPlay(705); }else if(frame >= 255 && frame < 405){ // слайд 3 slide_mc.gotoAndPlay(105); }else if(frame >= 405 && frame < 555){ // слайд 4 slide_mc.gotoAndPlay(255); }else if(frame >= 555 && frame < 705){ // слайд 5 slide_mc.gotoAndPlay(405); }else if(frame >= 705 && frame < 750){ // слайд 6 slide_mc.gotoAndPlay(555); } }
__________________
Дети не должны знать о своих родителях |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 204
|
пробовал я и так. Не работает... (
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:50. |
|
|
« Предыдущая тема | Следующая тема » |
|
|