Переход на случайный кадр без повторений

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
Аватара пользователя
alexey979797
Сообщения: 48
Зарегистрирован: 27 сен 2011, 18:54

Переход на случайный кадр без повторений

Сообщение alexey979797 »

У меня весь код в кадрах и я хочу сделать переход на случайный кадр (например, чтобы на 5-15 кадре была кнопка, которая позволяет переходить по этим кадрам без повторений до того момента, пока не побываешь на всех кадрах, а после этого перейти на 16-ый кадр). У меня есть код, но он не совсем корректно работает:

Код: Выделить всё

stop();function shuffle(a,b):int {var num : int = Math.round(Math.random()*2)-1;return num;} var arr:Array= [];for(var i:int = 1; i <totalFrames; i++ ) {arr.push(i);} addEventListener (MouseEvent.CLICK, RandomUniqueFrame);  function RandomUniqueFrame(e:MouseEvent):void{arr.sort(shuffle);arr.length != 0 ?gotoAndStop(arr[0]) : gotoAndStop(6);trace(currentFrame)arr.shift();}
Помогите, пожалуйста! Знаю, что писать код в кадрах плохо, так что не пишите об этом
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

Re: Переход на случайный кадр без повторений

Сообщение gaponj88 »

alexey979797
Прекращай писать в кадрах, уйма альтернатив, причем грамотных и не сложных
Аватара пользователя
alexey979797
Сообщения: 48
Зарегистрирован: 27 сен 2011, 18:54

Re: Переход на случайный кадр без повторений

Сообщение alexey979797 »

gaponj88 писал(а):alexey979797
Прекращай писать в кадрах, уйма альтернатив, причем грамотных и не сложных
Я же просил не писать об этом. И так знаю. Потом буду переходить. Не переписывать же мне готовое приложение полносью
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

Re: Переход на случайный кадр без повторений

Сообщение gaponj88 »

alexey979797Если знаешь, зря вопрос задал, разберись в себе, может что и получиться, больше я тебе не помогу
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: Переход на случайный кадр без повторений

Сообщение sanych_dv »

gaponj88 писал(а):alexey979797
Прекращай писать в кадрах, уйма альтернатив, причем грамотных и не сложных
Совершенно верно. Не вижу никаких проблем вынести этот кусок кода в отдельный класс.
Аватара пользователя
alexey979797
Сообщения: 48
Зарегистрирован: 27 сен 2011, 18:54

Re: Переход на случайный кадр без повторений

Сообщение alexey979797 »

gaponj88, sanych_dv, если бы мне нужен был код в классе, то я бы так и написал.
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: Переход на случайный кадр без повторений

Сообщение sanych_dv »

alexey979797 писал(а):gaponj88, sanych_dv, если бы мне нужен был код в классе, то я бы так и написал.
А что вы в таком случае вообще ждете? Что вас будут тут поддерживать в вашей безграмотности и писать для вас богопротивные костыли? )
Аватара пользователя
alexey979797
Сообщения: 48
Зарегистрирован: 27 сен 2011, 18:54

Re: Переход на случайный кадр без повторений

Сообщение alexey979797 »

sanych_dv писал(а): А что вы в таком случае вообще ждете? Что вас будут тут поддерживать в вашей безграмотности и писать для вас богопротивные костыли? )
Хотя бы просто подсказать, где ошибка :cry:
gpv123
Сообщения: 346
Зарегистрирован: 29 янв 2012, 20:57

Re: Переход на случайный кадр без повторений

Сообщение gpv123 »

alexey979797 писал(а):Хотя бы просто подсказать, где ошибка :cry:
Просто в твоем примере в массив запихивается текущий кадр, после перехода на который код выполняется снова, сбрасывая предыдущие данные.

Код: Выделить всё

stop(); var arr:Array = [];for(var i:int = currentFrame + 1; i < totalFrames; i++) arr.push(i);arr.sort(function(a:*, b:*):Boolean{return Math.random() < .5}); stage.addEventListener(MouseEvent.CLICK, RandomUniqueFrame); function RandomUniqueFrame(e:MouseEvent):void{    if (arr.length != 0)    {        gotoAndStop(arr.shift());    }    else    {        gotoAndStop(totalFrames);        stage.removeEventListener(MouseEvent.CLICK, RandomUniqueFrame);    }    trace(currentFrame);}
Ответить