DaN_Apps 1 Denunciar post Postado Outubro 16, 2014 Fala galera sou novo por aqui, desenvolvo apps para celulares e costumo usar as3 em games, vi o post vou postar a solução que achei para um Inertial Touchscroll, para apps. Derepente da pra tirar alguma idéia dele e fazer um mais voltado para browsers. Vejam o que acham // imports e afins... public class ScrollScreen extends MovieClip { // drag data public var destination : Point = new Point(); public var dragging : Boolean = false; public var speed : Number = 7; public var offset : Point = new Point(); public var bounds : Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight ); // construct public function ScrollScreen(){ //Constroe uma mascara ou usa alguma que ja tiver no palco selectContainerMask = new Sprite(); selectContainerMask.graphics.beginFill(0x0000FF); selectContainerMask.graphics.drawRect(0, 200, 800, 1300); selectContainerMask.graphics.endFill(); addChild(selectContainerMask); //Esse cara aqui fica com o conteúdo que eu quero poder mover no touch (scroll) selectContainer = new Sprite(); selectContainer.mask = selectContainerMask; selectContainer.graphics.beginFill(0xffaabb, 0); selectContainer.graphics.drawRect(0, 0, 800, 1300); selectContainer.graphics.endFill(); addChild(selectContainer); // eu fico ouvindo uns eventos no cara que vai ter o touch selectContainer.addEventListener(MouseEvent.MOUSE_DOWN, startdrag); selectContainer.addEventListener(Event.ENTER_FRAME, addTouchScroll); selectContainer.addEventListener(MouseEvent.MOUSE_UP, stopdrag); // essa função guarda meu offset public function startdrag(e : MouseEvent) : void { offset.x = selectContainer.mouseX * selectContainer.scaleX; offset.y = selectContainer.mouseY * selectContainer.scaleY; dragging = true; } // essa chama quando para o touch public function stopdrag(e : MouseEvent) : void { dragging = false; } // aqui a magica acontence public function addTouchScroll(e : Event) : void { if (dragging) { // destination.x = mouseX; destination.y = globalToLocal(new Point(mouseX, mouseY)).y; } selectContainer.y -= (selectContainer.y - (destination.y - offset.y)) / speed; if (selectContainer.y > bounds.top) { selectContainer.y = bounds.top; } if (selectContainer.y < -selectContainer.height + bounds.bottom) { selectContainer.y = -selectContainer.height + bounds.bottom; } } } Compartilhar este post Link para o post Compartilhar em outros sites