2010-07-28 18 views
0

J'ai un MovieClip avec le nom d'instance «core». Core contient 500 images, et à partir de la timeline racine, je veux être capable de cliquer sur un MovieClip que j'ai avec l'instance «scroller» et l'avoir scrub à travers les 500 images, en avant ou en arrière dans une zone confinée.Utilisation d'un graphique pour faire défiler la chronologie dans AS3

J'ai essayé quelques choses comme Timelinemax mais j'ai des problèmes à le faire fonctionner. La chronologie a été créée manuellement (sans Tweenmax ou quoi que ce soit).

Des idées? Je ne trouve pas de bons exemples partout.

Merci

Répondre

0

fait un exemple simple pour que vous puissiez CATCHUP la logique. vous pouvez ajuster le scrollRange à la valeur dont vous avez besoin.

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