2010-07-28 4 views
0

저는 인스턴스 이름이 'core'인 영화 클립이 있습니다. 코어에는 500 프레임이 포함되어 있으며 루트 타임 라인에서 인스턴스 'scroller'로 가져온 무비 클립을 클릭하여 제한된 영역 내에서 앞으로 또는 뒤로 500 프레임을 스크럽 할 수 있습니다.그래픽을 사용하여 AS3에서 타임 라인을 스크롤합니다.

Timelinemax와 같은 몇 가지 사항을 시도했지만 문제가 발생했습니다. 타임 라인은 수동으로 생성되었습니다 (Tweenmax 또는 기타 제외).

아이디어가 있으십니까? 나는 어디에서든지 좋은 본보기를 찾을 수 없다.

감사합니다.

답변

0

로직을 따라 잡을 수 있도록 간단한 예를 만들었습니다. 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);