Looping 3D-ish AS3 Галерея изображений - PullRequest
0 голосов
/ 04 ноября 2011

Привет! Я хочу настроить галерею с эффектом, подобным следующему: http://www.alva -amco.com / , но я хотел, чтобы элементы кнопок бесконечно зацикливались вместо остановки, а также начала и концаданные.Я понимаю, как это сделать, когда изображения просто в ряд движутся по прямой линии, но это дополнительное движение сбивает меня с толку.Кроме того, я не уверен, как запрограммировать отдельные кнопки, чтобы их можно было нажимать, чтобы галерея правильно перерисовывалась при переходе к новому индексу.

Будем весьма благодарны за любые пояснения, ссылки или код.

Ответы [ 2 ]

0 голосов
/ 30 декабря 2011

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

Вы можете найти ссылку здесь .

Иметь КРАСНЫЙ ДЕНЬ

0 голосов
/ 05 ноября 2011

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

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

a           b
x x x x x x x 

«х» - это круг, а «а» и «b» - начальный и конечный кадры соответственно.Представьте, что экран был очень маленьким.Теперь, если круг перемещается на 10 пикселей в каждом кадре, а его позиция x на кадре «a» равна 20, то его позиция x на кадре «b» должна быть 10, чтобы представить иллюзию плавной непрерывной анимации дляпользователь.В кадре "b" вам понадобится код:

gotoAndPlay('a');

Если анимация не является непрерывной, то есть это анимация остановки и запуска, как в описанном вами случае, то положение круга на кадрах«a» и «b» должны были бы быть идентичны.

И поэтому, специфично для меню на сайте, на который вы ссылаетесь, рамка «a» будет иметь следующие кнопки:

1 2 3 4 5 6 7 8

, тогда как кадр "b - 1" будет иметь следующие кнопки:

8 1 2 3 4 5 6 7

(где "1" в "b-1" - это сколько кадров в анимации от одной кнопки к другой))

и кадр "b" будет идентичен кадру "a".

Теперь, чтобы запрограммировать кнопки для правильной анимации, чтобы вывести нажатую кнопку на передний план, вы можете сделать что-то вродеэто:

var is_transitioning:Boolean = false;

// For each button...
button.addEventListener(MouseEvent.CLICK, animate_menu_on_button_click);

function animate_menu_on_button_click(event:MouseEvent):void
{
   if (is_transitioning) 
     return;

   is_transitioning = true;

   var target_button:DisplayObject = event.target as DisplayObject;
   var end_frame:uint = get_end_frame_by_button(target_button);

   stage.addEventListener(Event.ENTER_FRAME, function(e:Event):void
   {
      if (menu.currentFrame == end_frame)
      {
        menu.stop();
        stage.removeEventListener(e.type, arguments.callee);
        is_transitioning = false;
      }
   });

   menu.play();
}

// Note that the end frame is the frame where the button is in 'focus' (at the forefront)
function get_end_frame_by_button(target_button:DisplayObject):uint
{
   switch (target_button)
   {
      case 'button_one':
      // etc.
   }
}

\ m / \ m /

...