循环3D-ish AS3图库

时间:2011-11-04 19:50:53

标签: flash actionscript-3 image-gallery

您好我想设置一个类似于此的效果库:http://www.alva-amco.com/,但我希望按钮项无限循环而不是停止以及数据的开头和结尾。我理解当图像只是沿着一条直线移动时,如何做到这一点,但这个额外的动作让我失望。此外,我不确定如何将各个按钮编程为可点击,以便图库在跳转到新索引时正确地重绘自己。

非常感谢任何解释,链接或代码。

2 个答案:

答案 0 :(得分:0)

要无休止地循环,您只需要通过返回到最后一帧的开头来手动实现循环行为。请注意,在这种情况下,您的起始帧和结束帧必须相同,或者(在连续动画的情况下)表示从结束帧到起始帧的平滑过渡。

例如,以一个简单的循环动画为例 - 从屏幕的左侧到右侧的一个圆圈。一旦它越过屏幕,它就会回到起点。动画是平滑的,以便最后一帧过渡到完美的开始帧:

a           b
x x x x x x x 

" x"是圈子," a"和" 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" in" b-1"然而,从一个按钮到另一个按钮,动画中有很多帧)

和框架" b"与frame" 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 /

答案 1 :(得分:0)

我有一个链接,您可以在其中找到许多用于创建图库的组件。你只需要免费下载它。只需要改变XML和图像。

您可以找到链接here

有一个好的一天