2010-01-12 5 views
0

Je suis un noob qui essaie de développer mon premier site avec Flash. J'ai fait quelques changeurs, mais ils ne sont pas lisses ...Soft scroll avec ActionScript 3.0

Le code j'étais:

const scrollUpper:int = -151; 
const scrollLower:int = 366; 
const scrollRange:int = scrollLower - scrollUpper; 
var dragBounds:Rectangle = new Rectangle(scroller_mc.x, scrollUpper, 0, scrollRange); 

var viewableHeight:int = 545; 
var textUpper:int = text_mc.y; 
var textLower:int = textUpper + text_mc.height; 
var textRange:int = text_mc.height - viewableHeight; 

scroller_mc.addEventListener(MouseEvent.MOUSE_DOWN, startScrolling); 
stage.addEventListener(MouseEvent.MOUSE_UP, stopScrolling); 
stage.addEventListener(Event.MOUSE_LEAVE, stopScrolling); 
stage.addEventListener(Event.DEACTIVATE, stopScrolling); 

function scroll(e:Event = null){ 
const pctMoved:Number = 1 - (dragBounds.bottom - scroller_mc.y)/dragBounds.height; 
text_mc.y = textUpper - (pctMoved * textRange); 
} 

function startScrolling(event:MouseEvent):void{ 
addEventListener(Event.ENTER_FRAME, scroll); 
scroller_mc.startDrag(true, dragBounds); 
} 

function stopScrolling(event:Event = null):void{ 
removeEventListener(Event.ENTER_FRAME, scroll); 
scroller_mc.stopDrag(); 
} 

Les changeurs fonctionne, mais ils pourraient être tellement lisse! En avance, veuillez excuser une erreur en anglais, d'accord?

Merci

Marcus

Répondre

1

Vérifiez votre fréquence d'image. Si c'est faible (comme 12 fps), alors l'augmenter à 30 ou 60 fps pourrait aider. Sinon, vous pouvez vous intéresser à la fonction scroll() qui est appelée à chaque événement ENTER_FRAME. Qu'est-ce que ça fait?

0

Vous devez donner "event.updateAfterEvent();" en vous événement Scroll, ce ignorera votre framerate, et mettre à jour l'affichage juste après l'événement est comeplete

--Andy

+0

Comment pourrais-je faire cela, Andy? Pourriez-vous expliquer? Merci d'avance! :) – MarcusVR

+0

dans votre fonction défiler, comme la dernière déclaration là-bas mis, e.updateAfterEvent(); – Andy