Iniciando com Flex e PHP usando WebORB

WebORB, Flash, Flex / Flex Builder, Flex Builder 4 Comments »

WebORB para PHP fornece uma implementação para Flex Remoting e Flex Messaging. Usando WebORB, desenvolvedores PHP podem integrar aplicações clientes Flex com objetos implantados em aplicações PHP. Além disso, WebORB para PHP pode funcionar como um gateway suportando assim aplicações flash cliente.

Iniciando – Instalação WebORB

A instalação do WebORB para PHP tem a seguinte estrutura de diretórios:

Iniciando – Instalação WebORB

Se estiver distribuindo de um computador Windows com IIS conceda permissão ler/escrever para a conta IUSR_< machinename> para a pasta Weborb.
Você pode verificar se a instalação do WebORB está correta no Management Console incluída com a distribuição WebORB. Abra http://localhost/caminho de instalação do weborb no navegador.Quando a console é carregado, você pode inspecionar o serviços remoto PHP através da aba Management ou executar os exemplos incluído com o produto.

Flex Builder Setup

Para criar um projeto Flex Builder para trabalhar com WebORB e PHP, siga as instruções do presente artigo ou observe o screencast (tem um em português feito pelo Ved - http://www.vedovelli.com.br).

Flex Application Code

A distribuição do WebORB para PHP contém alguns projetos Flex acabados demonstrando a conectividade e um remoting invocation. Copie e cole o conteúdo do exemplo.mxml localizado em \Exemplos\SampleApp\no mxml criado no Flex Builder. O código da aplicação faz uma conexão com um objeto PHP e retorna algumas informações básicas sobre o computador onde o objeto estiver em funcionamento.

A fim de comunicar com um objeto PHP remoto, O Flex utiliza a API RemoteObject para criar um remoting proxy:

remoteObject = new RemoteObject();
remoteObject.destination = “InfoServiceDestination”;
remoteObject.getComputerInfo.addEventListener(”result”,onResult);
remoteObject.addEventListener(”fault”, onFault);

Note que o nome de destino verifica o destino colocado no remoting-config.xml. Quando um usuário clica no botão ‘Get Computer Info’, a seguinte função executa um método remoto:

private function getInfo():void
{
  invokeButton.enabled = false;
  currentUserText.text = “”;
  processIdText.text = “”;
  osText.text = “”;
  phpVersionText.text = “”;
  remoteObject.getComputerInfo();
}

Quando uma resposta invocada está disponível, o Flex invoca uma resposta handler especificada na tag <RemoteObject>. A resposta handler no exemplo, preenche os campos de texto com os dados disponíveis no objeto retornado:

private function onResult(event:ResultEvent):void
{
  var computerInfo:Object = event.result;
  currentUserText.text = computerInfo.currentUser;
  processIdText.text = computerInfo.phpProcessId;
  osText.text = computerInfo.operatingSystem;
  phpVersionText.text = computerInfo.phpVersion;
  invokeButton.enabled = true;
}

Código PHP

O código fonte para a classe PHP server-side está abaixo:

class InfoService
{
  public function getComputerInfo()
  {
    $compInfo = new ComputerInfo();
    $compInfo->currentUser = get_current_user();
    $compInfo->phpProcessId = getmypid();
    $compInfo->operatingSystem = php_uname( ‘a’ );
    $compInfo->phpVersion = phpversion();
    return $compInfo;
  }
}
class ComputerInfo
{
  public $currentUser;
  public $phpProcessId;
  public $operatingSystem;
  public $phpVersion;
}

Distribuindo

IMPORTANTE Garanta a localização do diretório onde o Flex Builder copia a aplicação cliente compilada. É muito importante importar uma cópia do weborb.php no mesmo diretório.
weborb.php deve conter os seguintes códigos PHP:

<?php 
   require_once(”../Weborb/ORBHttpHandler.php”);
   $m_ORBHttpHandler = new ORBHttpHandler();
   $m_ORBHttpHandler->processRequest();
?>

MUITO IMPORTANTE: A primeira linha deve ser editada para apontar ao diretório Weborb da distribuição do produto. Por exemplo, vejam weborb.php localizado na pasta /Console.

Executando Aplicação Flex

Neste momento a aplicação Flex está pronta para funcionar. Você pode usar o Flex Builder para executar a aplicação.

Nota: Tradução feita a partir do original inglês em: http://www.themidnightcoders.com

Guia de ActionScript 3.0 em português… ufaa! Já era sem tempo.

Flash, Flex / Flex Builder, Flex Builder 3 Comments »

Olá pessoal, finalmente resolveram ter dó dos brasileiros e disponibilizaram o Guia de ActionScript 3.0 em Português, espero que atrás desse venham muitos outros, principalmente de Flex.

Segue o link para baixar o PDF

http://help.adobe.com/pt_BR/ActionScript/3.0_ProgrammingAS3/flash_as3_programming.pdf

Quem quiser ver direto no browser, aqui vai:

http://help.adobe.com/pt_BR/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-8000.html

Até mais, bom estudo!

Iniciando com Cairngorm – Parte 3

Flex / Cairngorm, Flex Builder 1 Comment »

Agora que você tem isolados dois elementos específicos do Micro-Arquitetura Cairngorm, vamos agora criar uma aplicação mais completa. Até agora os tutoriais abrangeo apenas um design pattern, o ModelLocator, mas agora você será apresentado ao elemento mais determinante do Cairngorm, o Serviço ao Trabalhar com design padrão. A explicação deste padrão será em dois tutoriais. Este tutorial destina-se a cobrir o fluxo básico dentro de uma aplicação Cairngorm, bem como o próximo tutorial será expandida para incluir este fluxo servidor interação. No entanto, antes que você possa aplicar adequadamente este projeto padrão você precisa aprender sobre a organização de um projecto Cairngorm

Organizando um projeto Cairngorm

Uma das tarefas envolvidas com o projeto é qualquer organização. Ao trabalhar com outros desenvolvedores, esta se torna extremamente importante. Normalmente, um projeto Cairngorm é organizado da seguinte forma:

Existe um arquivo Main.mxml que é a aplicação principal para o Cairngorm.
• Os arquivos do projeto estão contidos em uma pasta que usa o formato ” reverse-dns “. Por exemplo, se o projecto foi nomeado CairngormSample, gostaria de utilizar as seguintes pastas net / davidtucker / CairngormSample.
• Dentro do diretório CairngormSample, haverá as seguintes pastas (haverá outras pastas adicionado no próximo tutorial).

  • event/ - Este diretório mantém todos os eventos personalizados para a aplicação
  • control/ - Este diretório é a casa do FrontController para a aplicação
  • commands/ - Este diretório contém os comandos que são chamados pela FrontController
  • model/ - A ModelLocator está contido nesta pasta (e outras classes relacionadas com o model)
  • view/ - Os componentes de view estão contidos neste diretório

Seguindo esse padrão, você pode saber onde encontrar qualquer classe que você pode precisar na sua aplicação Cairngorm. A Figura 1 ilustra esta estrutura de projeto. Ele também é um bom processo de desenvolvimento a ter um padrão estrutura organizacional para seus projetos - mesmo se você não estiver usando Cairngorm
Cairngorm Project Folder
Figure 1 - Cairngorm Project Structure

O serviço para trabalhar com padrão.

O Serviço para Trabalhar com Padrão é o mais difícil para a maioria das pessoas entenderem. Abrange mais da lógica da aplicação Cairngorm. Para compreender este padrão, será necessário compreender algumas das classes que estão incluídas no Cairngorm e seus respectivos efeitos.

CairngormEvent [Referência] - CairngormEvent é central nesse padrão. Trata-se do evento. Para o evento ser tratados adequadamente no Cairngorm, ela terá de ser do tipo CairngormEvent.
CairngormEventDispatcher [Referência] - CairngormEventDispatcher efetivamente as expedições CairngormEvents. É um Singleton (tal como o ModelLocator). Em versões anteriores Cairngorm, que poria esta classe regular, mas agora CairngormEvents pode-se (através do método de expedição). Este método é simplesmente um wrapper para o CairngormEventDispatcher, por isso mesmo se não tiver realmente importado e chamado a classe, ainda é central para o Service to Worker pattern em Cairngorm.
FrontController [Referência] – Os mapas FrontController é um CairngormEvent para um Command.
ICommand [Referência] - Para um comando funcionar corretamente em Cairngorm, ele precisa implementar a interface ICommand. Essa interface exige que um comando terá um método chamado execute e que aceitará o CairngormEvent que é mapeada para ela como um argumento.

O Event Flow do Cairngorm

A forma que essas classes interagem é o Cairngorm Evento Flow. A Figura 2 ilustra todo este processo. Enquanto este processo parece moroso, que segue uma ordem lógica.
Basic Cairngorm Event Flow
Figure 2 - Cairngorm Basic Event Flow
Por exemplo, assumir que a Figura 2 mostra o que acontece quando o usuário clica em um botão login. Tratar-se-ia seguir os seguintes passos

  • O usuário está visualizando um componente que tem um botão login.
  • Quando o botão é clicado, esse componente disparará um evento chamado LoginEvent que se estende CairngormEvent.
  • O FrontController irá receber o LoginEvent e executar o comando que é mapeado para o evento. Para este exemplo, será nomeado LoginCommand e implementará ICommand.
  • O comando é executado e recebeu o LoginEvent como um argumento. O LoginCommand irá alterar o valor workflowState no ModelLocator.
  • O ModelLocator terá uma constante predefinida para o ” Logged in View “. O comando irá mudar workflowState para este valor.
  • Neste ponto a view assumirá workflowState, irá automaticamente atualizar-se para a nova posição.

Depois que esses itens são entendidos, a próxima coisa mais importante para compreender O Cairngorm é: Tudo Deve Ser mapeadas para um evento. Trata-se de um excesso de simplificação drástica, mas é válido em muitas situações. Quando o usuário clica em um botão login - ele deve enviar uma CairngormEvent. Quando o usuário seleciona uma opção de mudar de opinião - ele deve enviar uma CairngormEvent. Quando um usuário envia um formulário para ser armazenado em um banco de dados - o formulário deverá enviar uma CairngormEvent. A expedição de um CairngormEvent conjuntos tudo em movimento

Custom CairngormEvent

A classe CairngormEvent pode ser utilizada dentro de seu projeto, mas na maioria das situações você irá criar seus próprios eventos personalizados que se estendem CairngormEvent (como afirmado anteriormente, de um evento para ser incluído no Cairngorm Event Flow ela deve estender CairngormEvent). Outra razão para criar eventos é personaliza-los para criar propriedades personalizadas do evento, que contêm os dados que você precisa passar para o comando. CairngormEvent tem uma propriedade denominada data (tipo de objeto), que podem conter dados, mas é ideal para ter uma propriedade strongly-typed onde você pode colocar os dados para passar.

Para este exemplo vai criar um evento que corresponde ao exemplo anterior de uma página de login. Este evento terá de cumprir os seguintes critérios:

  • Estender CairngormEvent
  • Ter uma propriedade para o nome de usuário
  • Ter uma propriedade para a senha

Código Exemplo 1 ilustra este evento concluído. Você pode ver que você precisará importar tanto a classe CairngormEvent como a basic Event. Além disso, tal como acontece com todos os eventos, você tem que definir o evento constante. Neste caso, você pode usar LOGIN. As propriedades são definidas abaixo do constante - e eles também são passados para o construtor. A única coisa fora do normal é que você precisa se sobrepor ao método público clone (). Isto é o que o método utiliza o evento para fazer uma cópia de si mesmo. Isto é fundamental no Cairngorm Event Flow. Além disso, para a função de implementar ICommand este método terá de ter um retorno tipo de evento (e não CairngormEvent).

Actionscript:

  • package net.davidtucker.CairngormSample.events {
  •    
  •     import com.adobe.cairngorm.control.CairngormEvent;
  •     import flash.events.Event;
  •    
  •     public class LoginEvent extends CairngormEvent {
  •    
  •         public static const LOGIN:String = “Login”;
  •        
  •         public var username:String;
  •         public var password:String;
  •        
  •         public function LoginEvent(submittedUsername:String,submittedPassword:String) {
  •             username = submittedUsername;
  •             password = submittedPassword;
  •             super(LOGIN);         
  •         }
  •        
  •         override public function clone():Event {
  •             return new LoginEvent(username,password);
  •         }
  •    
  •     }
  • }

Code Example 1 - Custom Event

Comandos

Os comandos dentro de um atual aplicativo Cairngorm “comando” da aplicação. Mesmo no próximo tutorial onde será interagindo com um servidor, o comando ainda fará a maioria dos trabalhos. Neste exemplo, você irá criar um componente que irá receber o nome de usuário e a senha do LoginEvent, verificar os valores contra valores  hard-coded e, em seguida, mudar o workflowState no ModelLocator se os valores estão corretos. O exemplo a seguir executa estas etapas (mas não tem os valores hard-coded incluídos - que serão cobertas no vídeo).

A primeira coisa a notar sobre o código abaixo no Código Exemplo 2 é que o LoginCommand implementa ICommand. Para conseguir isso a classe ICommand também é importado. Além disso, você vai notar o código boilerplate que você usou no passado para trazer no ModelLocator. Para implementar correctamente ICommand, o método execute () também é criado. Ele recebeu um evento do tipo CairngormEvent (tem que ser CairngormEvent e não LoginEvent para implementar correctamente ICommand). Para utilizar corretamente o caso, você precisará fazer um cast com este evento do tipo LoginEvent (o processo de casting será explicado no vídeo). A verdadeira lógica foi deixada fora deste comando, mas você pode ver que as atualizações ModelLocator de view. Depois que a lógica é implementada esta linha de código seria provavelmente colocado dentro de uma condição IF().

Actionscript:

  • package net.davidtucker.CairngormSample.commands {
  •    
  •     import com.adobe.cairngorm.commands.ICommand;
  •     import com.adobe.cairngorm.control.CairngormEvent;
  •     import net.davidtucker.CairngormSample.events.LoginEvent;
  •     import net.davidtucker.CairngormSample.model.ViewModelLocator;
  •        
  •     public class LoginCommand implements ICommand {
  •        
  •         public var modelLocator:ViewModelLocator = ViewModelLocator.getInstance();
  •        
  •         public function LoginCommand() {
  •         }
  •        
  •         public function execute(event:CairngormEvent):void {
  •        
  •             var loginEvent:LoginEvent = event as LoginEvent;
  •            
  •             // COMMAND LOGIC
  •            
  •             modelLocator.workflowState = ViewModelLocator.WELCOME_SCREEN;
  •            
  •         }
  •     }
  • }

Code Example 2 - Cairngorm Command

Controle de Frente (Front Controller)

Tal como referido anteriormente, o FrontController mapeia seus comandos CairngormEvents específicos. Sem isso, o evento jamais se integrará no fluxo Cairngorm. A classe estende FrontController e tem dois métodos: o método constructor e initialize o. O método initialize é onde você irá utilizar o método addCommand para mapear seus eventos de comandos (como se pode ver com o LoginEvent e LoginCommand).

Actionscript:

  • package net.davidtucker.CairngormSample.control {
  •    
  •     import com.adobe.cairngorm.control.FrontController;
  •    
  •     import net.davidtucker.CairngormSample.commands.*;
  •     import net.davidtucker.CairngormSample.events.*;
  •    
  •     public class SampleController extends FrontController {
  •    
  •         public function SampleController() {
  •             this.initialize();
  •         }
  •        
  •         public function initialize():void {
  1.            
  2.             //ADD COMMANDS
  3.             this.addCommand(LoginEvent.LOGIN,LoginCommand);
  4.            
  5.         }
  6.    
  7.     }
  8. }

Code Example 3 - The Cairngorm FrontController

Simplesmente criar um FrontController não é suficiente. Como qualquer classe que tem que ser instanciada dentro de sua aplicação. Código Exemplo 4 ilustra a forma de instanciar seu FrontController no Main.mxml de sua aplicação. Você só precisa adicionar o diretório como um controle XML Namespace e, em seguida, incluir a tag FrontController no arquivo.

mxml:

  • <?xml version=”1.0″ encoding=”utf-8″?>
  • <mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”
  •     xmlns:control=”net.davidtucker.CairngormSample.control.*”
  •     layout=”absolute”>
  •    
  •     <control:FrontController id=”controller” />
  • </mx:Application>

Code Example 4 - Integrating a FrontController

Agora que você tem visto os elementos básicos de um projeto Cairngorm, você pode realmente construir a amostra de trabalho com o vídeo. Como sempre, o código pedido está abaixo.

Tradução do original inglês: http://www.davidtucker.net

Usando parâmetro Query String

Flex / Flex Builder, Flex Builder No Comments »

Quando usar Flex Data Service, você pode adicionar parâmetros query string para amarar o pedido do cliente, e usar os valores daqueles parâmetros em qualquer aplicação Flex. Na realidade, o Flex e suporta variáveis de pedido GET passado como nome-valor no URL.

Quando criado a envoltura, O Flex Data Service converte os parâmetros para um flashVars. Como resultado, você pode acessar parâmetros query string em sua aplicação Flex se você estiver usando Flex Data Service ou se você implementar lado-servidor que lida gerando uma envoltura. Por exemplo, supõe que você está usando a camada-web, e você solicita a string seguinte na bara de endereço do Browser:

http://localhost:8101/flex/charts/PieChart1.mxml?fname=Nick&lname=Danger

o Flex adiciona aqueles valores como variáveis flashVars para o script.

NOTA

Você não pode passar parâmetros query string para aplicação Flex que roda dentro do Flash Player independente.

também pode anexar parâmetros query string para o <objeto> e <embutir> na propriedades src das tags no script. A propriedade src identifica o local do arquivo SWF da Aplicação Flex. Você acessa estes do mesmo modo que você acessa parâmetros da query string na barra de endereço do Browser.

O exemplo seguinte junta parâmetros Query String a propriedade src no script personalizado:

<object ... > 

<param name='src' value='TitleTest.mxml.swf?myName=Danger'>
     ...
<embed src='TitleTest.mxml.swf?myName=Danger' ... /> 

</object>

Como com propriedades flashVars, você pode acessa o valor do parâmetros em suas Aplicações Flex no objeto de parâmetros:

Var myName:String = Application.application.parameters.myName;

Se seu usuário solicita o arquivo SWF diretamente, sem um script, você pode acessar as variáveis na query string sem fornecer código adicional. O URL seguinte passa pelo nome Nick e a cidade natal São Francisco para a aplicação Flex:

http://localhost:8100/flex/myApp.swf?myName=Nick&myHometown=San Francisco

 

Traduzido da documentação oficial do ©Adobe ©Flex

Alert control

Flex / Flex Builder, Flex Builder No Comments »

Todos componentes Flex podem chamar o método estatico show() da classe para abrir a caixa de diálogo modal pop up com uma mensagem e um título opcional, botões, e ícones. O exemplo seguinte mostra um controle Alert personalizado:

O controle Alert fecha quando você selecionar um botão no controle, ou pressionar a tecla de Escape.
O método Alert.show() tem a seguinte sintaxe:

public static show(

text:String,
title:String = null,
flags:uint = mx.controls.Alert.OK,
parent:Sprite = null,
clickListener:Function = null,
iconClass:Class = null,
defaultButton:uint = mx.controls.Alert.OK) : Alert

Este método retorna um objeto Alert control object.
A tabela seguinte descreve os argumentos do método show():

text (Requerido) Especifica o texto da mensagem da caixa de diálogo
title Especifica o título de caixa de diálogo. Se omitido, exibe uma barra de título em branco.
flags Especifica o botão(ões) para exibir no caixa de diálogo. As opções são como segue: Mx.controls.Alert.OK botão OK Mx.controls.Alert.YES botão SIM Mx.controls.Alert.NO botão NÂO Mx.controls.Alert.CANCEL botão CANCELA Cada opção é um valor bit e pode ser combinada com outras opções usando o operador “|”. Os botões aparecerão na ordem listadas aqui não importando a ordem que você especifica-os em seu código. O valor padrão é mx.controls.Alert.OK.
parent O objeto pai do controle Alert
clickListener Especifica o listener(ouvinte) para o evento clique dos botões. O objeto event passado para este manipulador é uma instância da classe CloseEvent. O objeto event contém o campo detail, que é fixado para a bandeira do botão que foi clicado (mx.controls.Alert.OK, mx.controls.Alert.CANCEL, mx.controls.Alert.YES, ou mx.controls.Alert.NO).
iconClass Especifica um ícone para exibir à esquerda do texto da mensagem na caixa de diálogo
defaultButton Especifica o botão padrão usando um dos valores válidos para o argumento flags. Iste é o botão que é selecionado quando o usuário apertar o Enter. O valor padrão é Alert.OK.
Apertando as teclas de fuga, o botão Cancel ou No da mesma maneira que se você o clicasse.

Para usar o controle Alert, você primeiro importa a classe Alert em sua aplicação. Então chame o método show(), como o exemplo seguinte mostra:

<?xml version="1.0"?>
<!-- controlsalertAlertSimple.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 

<mx:Script>
          <![CDATA[
              import mx.controls.Alert;
          ]]>
</mx:Script> 

<mx:TextInput id="myInput" width="150" text=""/>
      <mx:Button id="myButton" label="Copy Text" click="myText.text = myInput.text;
      Alert.show('Text Copied!', 'Alert Box', mx.controls.Alert.OK);"/> 

      <mx:TextInput id="myText"/> 

</mx:Application>

Neste exemplo, selecionando o Botão o texto do TextInput é copiado para a TextArea, e exibe o Alerta.
Você também pode definir um evento listener(ouvinte) para o controle Button, como o exemplo seguinte mostra:

<?xml version=”1.0″?>
<!– controls\alert\AlertSimpleEvent.mxml –>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”>

<mx:Script>

<![CDATA[

import mx.controls.Alert;

private function alertListener():void {
myText.text = myInput.text;
Alert.show(”Text Copied!”, “Alert Box”, Alert.OK);
}
]]>
</mx:Script>

<mx:TextInput id=”myInput”
width=”150″
text=”"/>
<mx:Button id=”myButton”
label=”Copy Text”
click=”alertListener();”/>
<mx:TextInput id=”myText”/>
</mx:Application>

NOTA
Depois da caixa de diálogo do método show()ser criada, O Flex continua com o processo de sua aplicação; não espera pelo usuário fechar o caixa de diálogo.

Dimensionando o controle Alert

O controle automaticamente muda as propriedades de tamanhos para ajustar seu texto, botões, e ícone. Você pode explicitamente mudar o tamanho de um Alert usando o objeto Alert retornado do método show(), como o exemplo seguinte mostra:

<?xml version=”1.0″?>
<!– controls\alert\AlertSize.mxml –>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”>

<mx:Script>
<![CDATA[
import mx.controls.Alert;

// Define variable to hold the Alert object.
public var myAlert:Alert;

private function openAlert():void {
myAlert = Alert.show(”Copy Text?”, “Alert”,
Alert.OK | Alert.CANCEL);
// Set the height and width of the Alert control.
myAlert.height=150;
myAlert.width=150;
}
]]>
</mx:Script>

<mx:TextInput id=”myInput”
width=”150″
text=”"/>
<mx:Button id=”myButton”
label=”Copy Text”
click=”openAlert();”/>
<mx:TextInput id=”myText”/>
</mx:Application>

Neste exemplo, você fixa a propriedades altura e a largura do objeto Alert para tamanho do controle.

Usando event listeners com o Alert

O próximo exemplo adiciona um event listener ao controle da caixa de diálogo. Um event listener permite a você apresentar processo quando o usuário selecionar um botão do controle de Alerta. O event object passou para o event listenet é de tipo.
No próximo exemplo, você só copia o texto quando o usuário selecionar o botão OK no controle de Alerta:

<?xml version=”1.0″?>
<!– controls\alert\AlertEvent.mxml –>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”>

<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.CloseEvent;

private function alertListener(eventObj:CloseEvent):void {
// Check to see if the OK button was pressed.
if (eventObj.detail==Alert.OK) {
myText.text = myInput.text;
}
}
]]>
</mx:Script>

<mx:TextInput id=”myInput”
width=”150″
text=”" />
<mx:Button id=”myButton”
label=”Copy Text”
click=’Alert.show(”Copy Text?”, “Alert”,
Alert.OK | Alert.CANCEL, this,
alertListener, null, Alert.OK);’/>
<mx:TextInput id=”myText”/>
</mx:Application>

Neste exemplo, você define um event listener para o controle Alert. Dentro do corpo do event listener, você determina que botão foi apertado examinando a propriedade detail do objeto event. O objeto event é uma instância da classe CloseEvent. Se o usuário apertou o botão OK, copie o texto. Se o usuário apertou qualquer outro botão, ou apertou a tecla Esc, não copie o texto.

Especificando um icone para o Alert

Você pode incluir um ícone no controle que aparece à esquerda do Alerta. Este exemplo modifica o exemplo da seção prévia para adicionar a tag embed metadata para importar o ícone.

<?xml version=”1.0″?>
<!– controls\alert\AlertIcon.mxml –>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml”>

<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.CloseEvent;
[Embed(source=”assets/alertIcon.jpg”)]
[Bindable]
public var iconSymbol:Class;

private function alertListener(eventObj:CloseEvent):void {
// Check to see if the OK button was pressed.
if (eventObj.detail==Alert.OK) {
myText.text = myInput.text;
}
}
]]>
</mx:Script>

<mx:TextInput id=”myInput”
width=”150″
text=”"/>
<mx:Button id=”myButton”
label=”Copy Text”
click=’Alert.show(”Copy Text?”, “Alert”,
Alert.OK | Alert.CANCEL, this,
alertListener, iconSymbol, Alert.OK );’/>
<mx:TextInput id=”myText”/>
</mx:Application>

Traduzido da documentação oficial do ©Adobe ©Flex

RIA, É o melhor remédio!

Flex / Flex Builder, Flex Builder, Ruby on Rails No Comments »

Desde que a Internet apareceu em minha vida, ainda com o nome de BBS, venho estudando e me aprimorando desde então, já estudei muitos assuntos dentro da minha área, mas nunca ri tanto, quando conheci o Flex 2, já tinha instalado uma vez, mas a primeira vez que instalei, não consegui nem executá-lo (era o SDK).

Desisti! Depois de algum tempo, estudando na FGG (Faculdade Gratuita Google) o professor Search me apresentou o Flex 2 Builder, baixei alguns tutoriais, e comecei a bricar com ele, simplesmente apaixonante.

Minha satisfação então se completou quando conheci o curso de Flex on Rails que o Carlos Eduardo iria ministrar através do Treina TOM. Foi através dele que conheci mais ainda o poder do Flex.

Essa semana recebi um e-mail, curso de Flex pela e-Genial, só felicidade, com certeza serei uns dos primeiros a me inscrever. Quero ter um domínio completo sobre o Flex, e não perderia por nada um curso de Flex ministrado nada mais, nada menos por Fábio Terracini, um dos pioneiros com desenvolvimento em Flex no Brasil.

É claro, não poderia deixar de agradecer o meu amigo Carlos Eduardo por ser um dos principais, senão o mais, a contribuir para o crescimento da RIA aqui no Brasil.

RIA, faz bem pros olhos!