Flex/ Flex 3/ Flex 3 para Flex 4/ Flex 4

Flex 3 para Flex 4 : Escopo do aplicativo

Uma das caracteristicas de frameworks RAD (Rapid Application Development) é a fácil abstração da API. Você deve ter em seu aplicativo Flex 2/3 de pequeno e médio porte muito uso do parentApplication, parentDocument, outerDocument. Esse mecanismo ajuda você acessar propriedades já existentes no Application principal e compartilhar métodos entre componentes, fazendo assim uma representação meia boca de interface.

Então você estava acostumado a fazer assim no Flex 3:

parentApplication:

Application principal

1
2
3
4
5
6
7
8
9
10
11
12
13
< ?xml version="1.0" encoding="utf-8"?>
<mx :Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*">
 
 
	</mx><mx :Script>
		< ![CDATA[
 
 
			public var VALOR_DECLARADO:String = "Oba Flex 3/4";
		]]>
	</mx>
	<ns1 :Teste x="120" y="38">
	</ns1>

E nos componentes você acessar a variável VALOR_DECLADO dessa forma:

Componente acessando a variável:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
< ?xml version="1.0" encoding="utf-8"?>
<mx :Panel creationComplete="teste()" xmlns="*" xmlns:mx="http://www.adobe.com/2006/mxml" width="196" height="244">
 
 
	</mx><mx :Script>
		< ![CDATA[
			import mx.core.Application;
 
			private function teste():void
			{
				this.title = parentApplication.VALOR_DECLARADO;
			}
 
		]]>
	</mx>

Você pode acessar tudo que quiser, desde que os métodos no Application principal esteja público.

No Flex 4, como temos 2 tipos de Application, seja ele mx.core.Application ou spark.core.Application, eles mudaram esse acesso, passando de uma forma simples de parentApplication para um singleton (topLevelApplication), onde você pode acessar da mesma forma que você usava, só que agora usando a classe reservada para isso FlexGlobals.

Então o mesmo exemplo no Flex 4 você teria isso aqui:

Application

1
2
3
4
5
6
7
8
9
10
11
12
13
< ?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">
	<fx :Declarations>
	</fx>
 
	<fx :Script>
		< ![CDATA[
				public var VALOR_FLEX_4:String = "Ola Flex 4";
		]]>
	</fx>
</s>

Componente acessando a variável VALOR_FLEX_4:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
< ?xml version="1.0" encoding="utf-8"?>
<s :Panel xmlns:fx="http://ns.adobe.com/mxml/2009"
		 xmlns:s="library://ns.adobe.com/flex/spark"
		 xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300" creationComplete="panel1_creationCompleteHandler(event)">
	<fx :Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx>
 
	<fx :Script>
		< ![CDATA[
			import mx.core.FlexGlobals;
			import mx.events.FlexEvent;
 
 
 
			protected function panel1_creationCompleteHandler(event:FlexEvent):void
			{
				this.title = FlexGlobals.topLevelApplication.VALOR_FLEX_4;
			}
 
		]]>
	</fx>
</s>

O parentDocument continua a mesma coisa, então você não encontrará problemas relacionado a isso em seu processo de migração para o Flex 4. Saiba mais dicas aqui na documentação oficial.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *