使用图形在AS3中滚动时间轴

时间:2010-07-28 23:41:41

标签: flash actionscript-3 scroll timeline

我有一个实例名称为'core'的movieclip。核心包含500帧,从根时间线开始,我希望能够点击我使用实例'scroller'的动画片段并让它在限定区域内向前或向后擦除500帧。

我已经尝试了一些像Timelinemax这样的东西,但是我遇到了麻烦。时间线是手动创建的(没有Tweenmax或任何东西)。

有什么想法吗?我无法在任何地方找到好的例子。

由于

1 个答案:

答案 0 :(得分:0)

做了一个简单的例子,你可以赶上逻辑。 你可以将滚动范围调整到你需要的值。

import flash.events.MouseEvent;
import flash.geom.Rectangle;
import flash.events.Event;

var scrollP:Point = new Point(scroller.x,scroller.y);
var scrollRange:int = 100;
var timelineTotalFrames:int = core.totalFrames;
var rect:Rectangle = new Rectangle(scrollP.x,scrollP.y,scrollRange,0);

core.stop();


function onDown(e:MouseEvent):void
{
scroller.startDrag(false, rect );
addEventListener(Event.ENTER_FRAME, onScroll);
}

function onUp(e:MouseEvent):void
{
scroller.stopDrag();
if (hasEventListener(Event.ENTER_FRAME))
removeEventListener(Event.ENTER_FRAME, onScroll);
}

function onScroll(e:Event):void
{
// (scroller.x - scrollP.x) fix if your scroll have a x different from 0
var calcFrame : int = ((scroller.x - scrollP.x) * timelineTotalFrames) / scrollRange;
core.gotoAndStop(calcFrame);
}

scroller.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
scroller.addEventListener(MouseEvent.MOUSE_UP, onUp);
// release mouse outside scroll
stage.addEventListener(MouseEvent.MOUSE_UP, onUp);