Pegar posição x,y da tela no FLEX

3 respostas
brunorota

Olá galera

Estou com um problema creio eu que seja complexo de ser resolvido.

Exemplo eu tenho um texto em um textArea e eu seleciono parte desse texto, eu preciso pegar a posição x,y desse texto pra eu colocar um componente no local, tipo um Button, ou inputText, tanto faz

O problema é, como eu vou pegar a posição do texto selecionado pra eu criar o componente em cima desse texto selecionado

Alguem ae tem alguma idéia de como eu possa fazer isso?

Atenciosamente

3 Respostas

E

Olá,

Não sei como fazer pra te ajudar, mas observe que você poderá ter vários pares xy que compreendem o trecho selecionado.

brunorota

sim

mas nao preciso de todos os pares, é só eu pegar o ponto inicial que eu testo pra colocar o componente no lugar correto, o problema mesmo é pegar a posição do texto selecionado.

renzonuccitelli
Fiz um código meio por cima, ele ainda só tira o botão depois de clicar duas vezes, mas pode te dar uma idéia:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   minWidth="955"
			   minHeight="600">
	<s:layout>
		<s:VerticalLayout/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import mx.controls.Text;
			import mx.events.FlexEvent;
			import spark.components.Button;
			[Bindable]
			public var anchor:Number;
			[Bindable]
			public var selection:Number;
			private var buttonPressed:Boolean=false;

			protected function txtArea_selectionChangeHandler(event:FlexEvent):void {
				anchor=txtArea.selectionAnchorPosition;
				selection=txtArea.selectionActivePosition;
				buttonPressed=false;
			}

			protected function group1_mouseUpHandler(event:MouseEvent):void {
				if(anchor!=selection&&group.numChildren<3&&!buttonPressed) {
					var but:Button=new Button;
					but.x=event.localX;
					but.y=event.localY;
					but.label="Button";
					but.addEventListener(MouseEvent.CLICK,removeButton);
					group.addElement(but);
				}
			}

			protected function removeButton(event:MouseEvent):void {
				buttonPressed=true;
				group.removeElementAt(1);
			}
		]]>
	</fx:Script>
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<s:Group id="group" mouseUp="group1_mouseUpHandler(event)">
		<s:TextArea id="txtArea" selectionChange="txtArea_selectionChangeHandler(event)"/>
	</s:Group>
	<s:Label text="{'a: ' +anchor+'s: '+selection}"/>
</s:Application>

[]s

Criado 15 de setembro de 2010
Ultima resposta 24 de set. de 2010
Respostas 3
Participantes 3