Форум 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=196522)

Termin 26.03.2013 08:16

Работа с массивом
 
В общем вопрос в чем, нужно по ранее пропсанному закону сортировать массив, например как, последний эллемент поставить на первое место а все оставшиеся сместятся и предпоследний станет последним, это в одну сторону, а в другую чтобы первый елемент становился на последнее место и аналогичным образом все сортировалось как и в первом примере.

Еще Вопрос, когда мы програмным образом переносим елемент массива с одного места на другой его же удалять с предыдущего места ненужно?

В общем я пропишу функцию по каторой будет определяться, как и в какой момент пересортировывать массив, я просто хочю как можно грамотрее прописать, прошу помочь мне разобраться как это сделать.

Спасибо!

Srednas 26.03.2013 08:27

Посмотрите справку по массивам.

Termin 26.03.2013 08:30

Ну да я обязательно это все просмотрю, все по потребности, встретился с проблемой разберись в корне, это все понятно, спасибо за ссыль. Мне прост осрочно нужно, читать разбираться на этой неделе у меня просто нет времени, поэтому прошу дать талчек, я бы просто понял какое поле иследовать в массивах, а современенм просто детально изучю все...

Srednas 26.03.2013 09:17

На неделе? ) Да у вас менее пары часов уйдет на изучение.
Все достаточно просто, смотрите:
push(... args):uint
Добавляет один или несколько элементов в конец массива и возвращает новую длину массива.
unshift(... args):uint
Добавляет один или несколько элементов в начало массива и возвращает новую длину массива.
pop():*
Удаляет последний элемент из массива и возвращает значение этого элемента.
shift():*
Удаляет первый элемент из массива и возвращает этот элемент.

Комбинируя, можно получить что-то вроде:
Код AS3:

var a:Array = [1, 2, 3]// создали массив
trace(a); // выводим массив, отображается [1, 2, 3]
a.unshift(a.pop()); // добавляем в начало (unshift) массива элемент, удаленный из конца (pop) массива
trace(a); // выводим массив, отображается [3, 1, 2]


Termin 26.03.2013 10:11

Цитата:

Сообщение от Srednas (Сообщение 1126815)
На неделе? ) Да у вас менее пары часов уйдет на изучение.

Я к таму, что это не единственная проблема и отвлекаться на изучение и создании, обдумывание более и менее подходящего алгоритма нет времени, вот вы бонально обьяснили в принципи простейшую вещь и я понял её принцип работы, на что спасибо, теперь я съэкономлю кое какое время. просто в сутках времени на работу во влеше у меня не так много, а работу нужно сделать в ближайшие сроки. 2 часа в день с нормальном случае а иногда так вообще нет времени...

Спасибо! Если есть у когото конкретные идеи или вопроссы, буду рад увидеть в этой теме)

Добавлено через 41 минуту
В таком случае решил задать вопросс поконкретнее. Ниже есть тема по созданию галереи. Вот встретившись с рядом проблем, решил создать тему отдельную про массивы, заодно изучить поглубже этот вопрос.

Что, хочю сделать, алгаритм таков: Отследить координаты первой картинки в массиве, если они привешают половины его ширины по ИКСУ, тогда на первый элемент массвива переноситься последний элемент, а первый уже становиться вторым и возвращаем новую длину, ну и так долее до бесконечности. Также с другой стороны, если последний елемент массива имеет координаты меньшечем длины флешки минус половина ширины картинки, значит уже первый элемент становиться последним, а последний предпоследним и т.д.
Вопросс в чем, подайдет ли такой алгоритм или как можно отследить другими способами или как лучше былобы отследить... Просто так сказать совет.

Спасибо

Srednas 26.03.2013 16:14

Возможно вам достаточно будет менять порядок отображения без «сортировки» массива.
С помощью setChildIndex.

А отдельные вопросы лучше оформлять в новой теме ;)

Termin 27.03.2013 07:46

Я сделал так: Описание: Если первая картинка превышает изночальные координаты по X тогда последняя картинка становиться за ней и она же становиться первым элементом массива так как первый элемент становиться вторым после него. Второй аргумент обратный т.е. если же последняя картинкаи имеет координату X меньше чем длина флешки минус половина её ширины т.е. если бы она была вся видна но не более того. тогда происходит обратный проццес

Код AS3:

if(Array[0].x>=Array[0].width/2)
          {
              Array[n].x=Array[0].x-(Array[0].x+Array[n].x)/2;
              Array.unshift(Array.pop());
          }
        if(Array[n].x<=stage.stageWidth-Array[n].width/2)
          {
              Array[0].x=Array[n].x+(Array[0].x+Array[n].x)/2;
              Array.push(Array.shaft());
          }

где n последний элеммент массива;

В таком случае прокрутка картинок движеться бесконечно в любом направлении, спасибо!)))


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

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