Ir para conteúdo

POWERED BY:

Arquivado

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

Ricardo Beck

Retorno de uma mensagem em SendAndLoad

Recommended Posts

Fala amigos,

Seguinte estou usando um arquivo action script para interagir com uma aplicação que roda em .net, ocorre que dentro de uma função depois que retorna os dados do SendAndLoad, não consigo manipular os controles, por exemplo quando tudo ocorreu bem em um login por exemplo, preciso que um Label chamado statusMsg informe que foi tudo bem, mas só consigo escrever algo neste Label fora desta função. Imaginei que fosse pelo fato de não ter um Void, mas não é:

 

import mx.controls.TextInput;
import mx.controls.Button;
import mx.controls.Label;
class Testando extends mx.screens.Form {
	var tbLogin:TextInput;
	var tbSenha:TextInput;
	var statusMsg:Label;
	var botao:Button;
	public function onLoad():Void {
		//tbLogin.setFocus();
		botao.addEventListener("click", this);
	}
	private function mudaStatus():Void {
		statusMsg.text = "Nada";
	}
	public function click(event:Object):Void {
		var objEnvia = new LoadVars();
		var objRecebe = new LoadVars();
		objEnvia.Opcao = "Logar";
		objEnvia.Login = tbLogin.text;
		objEnvia.Senha = tbSenha.text;
		objEnvia.sendAndLoad("http://localhost/bellouchi/TesteLogin.ashx", objRecebe, "POST");
		objRecebe.onLoad = function(ok:Boolean):Void  {
			mudaStatus();
			if (ok) {
				if (this.Logado == 1) {
					statusMsg.text = "Logado"; <<< A MENSAGEM NÃO ESTA SENDO MOSTRADA AO USUÁRIO, MAS SE TIVER FORA DA FUNÇÃO, PREENCHE.
				} else {
					statusMsg.text = "Não logado";
				}
			} else {
				statusMsg.text = "Erro no envio";
			}
		};
	}
}

 

O motivo do uso do arquivo é que dentro dele usarei outras funções como por exemplo, carregar um xml com detalhes ou com uma lista.

 

Atenciosamente,

 

Ricardo Beck

Conectta Softwares

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver, o OnLoad é um handler e dentro deste handler eu não consigo acessar as propriedades da classe de forma que o statusMsg é um Label presente no fla, assim dentro deste handler não conseguia ter acesso a este controle. Então lembrei de um mesmo problema que passei em asp.net , é o Delegate. Usando o método create, direcionei a chamada para uma função Void específica e dentro desta função eu pude manipular o resultado da variável , se foi Logado ou não.

 

Isso acabou também resolvendo um problema que eu tinha para carregar xml externo.

 

import mx.controls.TextInput;

import mx.controls.Button;

import mx.controls.Label;

import mx.utils.Delegate;

class Testando extends mx.screens.Form {

var tbLogin:TextInput;

var tbSenha:TextInput;

var statusMsg:Label;

var botao:Button;

private var objRecebe:LoadVars;

public function onLoad():Void {

botao.addEventListener("click", this);

}

private function mudaStatus() {

statusMsg.text = "Nada";

tbLogin.setFocus();

}

function onLoadEvent(success:Boolean, eventObj:Object):Void {

var valor:String = this.objRecebe.toString();

//statusMsg.text = valor.charAt(7);

if (success) {

if (valor.charAt(7) == "1") {

statusMsg.text = "Logado";

}else{

statusMsg.text = "Login inválido";

}

} else {

statusMsg.text = "Não foi possível estabelecer uma conexão";

}

}

public function click(event:Object):Void {

var objEnvia:LoadVars = new LoadVars();

objRecebe = new LoadVars();

objEnvia.Opcao = "Logar";

objEnvia.Login = tbLogin.text;

objEnvia.Senha = tbSenha.text;

objEnvia.sendAndLoad("http://localhost/bellouchi/TesteLogin.ashx", objRecebe, "POST");

objRecebe.onLoad = Delegate.create(this, onLoadEvent);

}

}

 

 

Fica ae o aprendizado. Espero que ajude a outros também.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma outra solução:

 

 

var palco = this 
objRecebe.onLoad = function(ok:Boolean):Void  {
			mudaStatus();
			if (ok) {
				if (this.Logado == 1) {
				   palco.statusMsg.text = "Logado";
				}
};

 

[]´s

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.