Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Annes

Scroll

Recommended Posts

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.