Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   цикличность анимации (http://www.flasher.ru/forum/showthread.php?t=202407)

kirill1989 13.07.2013 22:49

цикличность анимации
 
Есть анимация которая переходит при нажатии на кнопку по кадрам, кадры вытаскиваются из массива, изначальный кадр стартует с пятого но приходиться кликать два раза, что бы запустить переход, при проходе последнего кадра приходиться нажимать на кнопку так же два раза что бы опять возобновить анимацию. В output выводиться номер кадра (5) два раза. Как можно зациклить анимацию так что бы возобновлять ее одним кликом. Вот фрагмент кода:

Код AS3:

function mc_unit3Click(e:MouseEvent):void{
 
 
 
    var arrayOfFrames2:Array = arrayOfFrames.concat();
        if(mc_unit3.currentFrame == arrayOfFrames2[arrayOfFrames2.length-1])
{
mc_unit3.gotoAndStop(arrayOfFrames2[0]);
trace(arrayOfFrames2[0]);
currFrame2 = 0;
return;
}
 
 
 
        mc_unit3.gotoAndStop(arrayOfFrames2[currFrame2]);
        trace(arrayOfFrames2[currFrame2]);
        currFrame2++;
 
}


belv 13.07.2013 23:04

Весь код давайте , вы сделали не так как вам писали раньше.

kirill1989 13.07.2013 23:26

Код AS3:

var currFrame:uint = 0;
var needToWrite:String = "true";
var arrayOfFrames:Array = new Array();
 
 
 
var currFrame2:uint = 0;
 
 
var myXml:XML = <frames>
                                        <frame num="1" active="false"/>
                                        <frame num="2" active="false"/>
                                        <frame num="3" active="false"/>
                                        <frame num="4" active="false"/>
                                        <frame num="5" active="true"/>
                                        <frame num="6" active="true"/>
                                        <frame num="7" active="true"/>
                                        <frame num="8" active="false"/>
                                        <frame num="9" active="false"/>
                                        <frame num="10" active="false"/>
                                        <frame num="11" active="false"/>
                                        <frame num="12" active="false"/>
                                        <frame num="13" active="false"/>
                                        <frame num="14" active="false"/>
                                        <frame num="15" active="false"/>
                                        <frame num="16" active="false"/>
                                        <frame num="17" active="false"/>
                                        <frame num="18" active="false"/>
                                        <frame num="19" active="false"/>
                                        <frame num="20" active="false"/>
                                        <frame num="21" active="false"/>
                                        <frame num="22" active="false"/>
                                        <frame num="23" active="false"/>
                                        <frame num="24" active="false"/>
                                        <frame num="25" active="false"/>
                                        <frame num="26" active="false"/>
                                        <frame num="27" active="false"/>
                                        <frame num="28" active="false"/>
                                        <frame num="29" active="false"/>
                                        <frame num="30" active="false"/>
                                        <frame num="31" active="false"/>
                                        <frame num="32" active="false"/>
                                        <frame num="33" active="false"/>
                                        <frame num="34" active="false"/>
                                        <frame num="35" active="false"/>
                                        <frame num="36" active="false"/>
                                        <frame num="37" active="false"/>
                                        <frame num="38" active="false"/>
                                        <frame num="39" active="false"/>
                                        <frame num="40" active="false"/>
                                        <frame num="41" active="false"/>
                                        <frame num="42" active="false"/>
                                        <frame num="43" active="true"/>
                                        <frame num="44" active="true"/>
                                        <frame num="45" active="true"/>
                                        <frame num="46" active="true"/>
                                        <frame num="47" active="true"/>
                                        <frame num="48" active="true"/>
                </frames>;
 
                for each(var frame:XML in myXml.frame)
{
        if (frame.@active == needToWrite)
        {
                arrayOfFrames.push(frame.@num);
        }
}
 
function mc_unit3Click(e:MouseEvent):void{
 
 
 
    var arrayOfFrames2:Array = arrayOfFrames.concat();
        if(mc_unit3.currentFrame == arrayOfFrames2[arrayOfFrames2.length-1])
{
mc_unit3.gotoAndStop(arrayOfFrames2[0]);
trace(arrayOfFrames2[0]);
currFrame2 = 0;
return;
}
 
 
 
        mc_unit3.gotoAndStop(arrayOfFrames2[currFrame2]);
        trace(arrayOfFrames2[currFrame2]);
        currFrame2++;
 
}


belv 13.07.2013 23:52

Вложений: 1
Я не нашел у вас слушатель события нажатия кнопки.Высылаю файл посмотрите и найдите 10 отличий)))

kirill1989 14.07.2013 01:30

Цитата:

Сообщение от belv (Сообщение 1141021)
Я не нашел у вас слушатель события нажатия кнопки.Высылаю файл посмотрите и найдите 10 отличий)))

Теперь работает так как мне надо! Но как мне поправить код, что бы происходил возврат обратно по кадрам на созданную мною другую кнопку?

tsarapkabel 14.07.2013 02:17

Цитата:

Сообщение от kirill1989 (Сообщение 1141025)
Но как мне поправить код, что бы происходил возврат обратно по кадрам на созданную мною другую кнопку?

При нажатии кнопки вперёд - currFrame2++, при нажатии кнопки назад - currFrame2--, далее проверка на (-1)/array.length и проиграть gotoAndStop.

kirill1989 14.07.2013 02:58

Цитата:

Сообщение от tsarapkabel (Сообщение 1141026)
При нажатии кнопки вперёд - currFrame2++, при нажатии кнопки назад - currFrame2--, далее проверка на (-1)/array.length и проиграть gotoAndStop.

А можно по подробнее, я вроде попробовал, при нажатии идет на один кадр вперед, потом отматывает, и когда доходит до первого кадра останавливается т.е. нету цикла не зацикливается(

belv 14.07.2013 12:05

Вложений: 1
Вот так , но я не могу понять зачем вам понадобился такой функционал.


Часовой пояс GMT +4, время: 09:17.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.