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