Использование графики для прокрутки временной шкалы в AS3 - PullRequest
0 голосов
/ 29 июля 2010

У меня есть мувиклип с именем экземпляра 'core'. Ядро содержит 500 кадров, и из корневой временной шкалы я хочу иметь возможность щелкнуть имеющийся у меня фрагмент ролика с помощью экземпляра «скроллер» и заставить его пролистывать 500 кадров вперед или назад в пределах ограниченной области.

Я пробовал несколько вещей, таких как Timelinemax, но у меня проблемы с его работой. Временная шкала была создана вручную (без Tweenmax или чего-либо).

Есть идеи? Я не могу найти хороших примеров нигде.

Спасибо

1 Ответ

0 голосов
/ 29 июля 2010

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

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);
...