[Resolvido]Mover scroll de acordo com o foco em Flex 3

8 respostas
Ivan_Alves

E ai galera, tenho aqui em minha aplicação flex 3 um componente VBox onde posso adicionar varios outros componentes até então beleza eu adiciono tudo certinho e na maioria dos casos os componentes ultrapassam a tela que é de tamanho fixo, então dentro desses componentes possuo TextInput que vou percorrendo um por um então quando uso a tecl ‘TAB’ ele passa um por um mais quando ultrapassa o limite da tela a barra scroll não o acompanha. Queria saber se tem alguma forma de a scroll mover-se de acordo com que mudo o foco da tela???

vlw!!

8 Respostas

fmachado.dev

posta o código, fica mais fácil de ajudar

Ivan_Alves

Aí vai um código de exemplo

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="291" height="223">
	<mx:VBox x="32" y="10" width="220" height="171" backgroundColor="#D9D9D9">
		<mx:Canvas width="200" height="86">
			<mx:Label x="10" y="21" text="Texto 1:"/>
			<mx:Label x="10" y="47" text="Texto 2:"/>
			<mx:TextInput x="71" y="19" width="119"/>
			<mx:TextInput x="71" y="45" width="119"/>
		</mx:Canvas>
		<mx:HRule width="200"/>
		<mx:Canvas width="200" height="86">
			<mx:Label x="10" y="21" text="Texto 1:"/>
			<mx:Label x="10" y="47" text="Texto 2:"/>
			<mx:TextInput x="71" y="19" width="119"/>
			<mx:TextInput x="71" y="45" width="119"/>
		</mx:Canvas>
		<mx:HRule width="200"/>
		<mx:Canvas width="200" height="86">
			<mx:Label x="10" y="21" text="Texto 1:"/>
			<mx:Label x="10" y="47" text="Texto 2:"/>
			<mx:TextInput x="71" y="19" width="119"/>
			<mx:TextInput x="71" y="45" width="119"/>
		</mx:Canvas>
		<mx:HRule width="200"/>
	</mx:VBox>
	<mx:Button x="32" y="189" label="Salvar" width="220"/>
</mx:Application>

ao mudar o foco dos TextInput usando a tecla ‘TAB’ a barra não acompanha o foco atual

AUser

Usa a propriedade verticalScrollPosition.

http://www.google.com.br/#hl=pt-BR&source=hp&q=verticalscrollposition+flex&oq=verticalscrollposition+flex&aq=f&aqi=&aql=&gs_sm=e&gs_upl=264l2608l0l2687l24l17l0l11l11l0l504l1991l2-3.1.1.1l6&bav=on.2,or.r_gc.r_pw.&fp=46627f47b1fa84e6&biw=1600&bih=814

Ivan_Alves

Sofri mais consegui usei esse mesmo o verticalScrollPosition!!!

Aí a dúvida maior era achar a posição da canvas que tinha o foco tentei muitas coisas, procurei na net e não achei, então fiz o seguinte pra quem tiver a mesma dúvida

na minha canvas adiciono um evento ao 1º TextInput de FocusIn exemplo

<mx:TextInput x="71" y="19" width="119" focusIn="{this.dispatchEvent(new Event('mudouFoco'));}" />

como no meu caso para adicionar na VBox eu adiciono item por item assim também adiciono uma escuta

var canvasTeste:CanvasTeste = new CanvasTeste();
canvasTeste.iniciar("123");

//ao declarar meu objeto eu adiciono uma escuta para meu evento moverScroll ficando assim 
canvasTeste.addEventListener("mudouFoco", eventoMoverScroll);

vBox.addChild(canvasTeste);

e por último adiciono o método de escuta

private function eventoMoverScroll(event:Event):void{
	vBox.verticalScrollPosition = event.target.y as Number; //aqui pego a posição y do componente e movo
}

talvez aja outra forma mais fácil que não encontrei, mais pelo menos essa funciona, e se alguém souber uma melhor me avisa aí!

Obrigado a todos!

AUser

Tenta usar o FocusManager e pegar o item atual selecionado, e aí você pode pegar o Y direto dele, sem fazer essa gambi nojenta aí do Event…

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/FocusManager.html

ia ficar mais ou menos assim: <mx:VBox verticalScrollPosition="{FocusManager.getFocus().y}"

Tenta aí, não é garantia que funcione.

[]'s

Ivan_Alves

AUser:
Tenta usar o FocusManager e pegar o item atual selecionado, e aí você pode pegar o Y direto dele, sem fazer essa gambi nojenta aí do Event…

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/FocusManager.html

ia ficar mais ou menos assim: <mx:VBox verticalScrollPosition="{FocusManager.getFocus().y}"

Tenta aí, não é garantia que funcione.

[]'s

Esse não funciona o seguinte erro de compilação aparece

1061: Call to a possibly undefined method getFocus through a reference with static type Class

AUser

vê se é instância. Busca essa classe no google.

Ivan_Alves

Consegui apenas achar alguns valores Number dessa forma

mas eles repetem assim que muda para outra canvas e não são as posições y reais deles na VBox.

Criado 20 de julho de 2011
Ultima resposta 21 de jul. de 2011
Respostas 8
Participantes 3