Notícias

Alertando novamente sobre dia 5 de dezembro

Como já foi anunciado aqui antes; A palestra, irá acontecer dia 5 de dezembro na Adobe Brasil aqui em São Paulo, que fica na Rua Gomes de Carvalho.

No evento, você terá a oportunidade de ver de perto o que o Flex 2 é capaz de fazer para sua pequena e média empresa. Voltando-se, para esse foco que acredito eu, também fazer parte de 80% da realidade brasileira, quais os principais benefícios do uso do Flex para esse segmento.
Achou interessante? Então participe, além disso terei a oportunidade de lhe conheçer de perto, você que passa todos os dias aqui no blog para lêr o que escrevo.

Detalhe: O auditório da Adobe para eventos é pequeno e não suporta muita gente. Para garantir sua vaga.
Registre-se no site da ENG, clicando aqui, até o dia 04.

AS 3.0/ Notícias

Adicionando Objetos a aplicação em tempo de execução

Outra dúvida bastante comum para usuários que ainda não estão habituados à escrever parte do código em AS3, e , parte do código em MXML.
Basicamente MXML é um lexical de tudo que você poderia fazer usando AS3, MXML apenas simplifica esse uso e torna mais fácil a adoção ao invés de simplesmente criar puramente AS 3.
Os exemplos abaixo são bens usuais, eu tive essa experiência própria quando em um aplicativo feito em Flex precisou de mais ou menos 40 objetos no palco. Imagine tentar administrar isso usando um laptop de 15″. A tarefa é impossível, então vou postar uma solução bem simples e básica, não foi a que eu usei especificadamente, por quê, como diria Galileu Galilei – “”Não se pode ensinar alguma coisa a alguém, pode-se apenas auxiliar a descobrir por si mesmo.”

Então como usar a adição de objetos ao Application em tempo de execução?

Exemplo 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<mx:Application initialize="inicializa();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="413"><br />
	<mx:Script><br />
		</p>
<p>			public function inicializa():void<br />
			{<br />
				removeChild(um);<br />
				removeChild(dois);<br />
				removeChild(tres);<br />
				removeChild(quatro);<br />
			}<br />
			public function adicionaUm():void<br />
			{<br />
					addChildAt(um,numChildren +1);<br />
			}<br />
			public function adicionaDois():void<br />
			{<br />
					addChildAt(dois,numChildren +1);<br />
			}<br />
			public function adicionaTres():void<br />
			{<br />
					addChildAt(tres,numChildren +1);<br />
			}<br />
			public function adicionaQuatro():void<br />
			{<br />
					addChildAt(quatro,numChildren +1);<br />
			}<br />
		<br />
	</mx:Script></p>
<p>		<mx:Panel title="Painel - 1" id="um" width="100" height="100" x="19" y="74"></p>
<p>		</mx:Panel><br />
		<mx:Panel title="Painel - 2" id="dois" width="200" height="200" x="19" y="74"></p>
<p>		</mx:Panel><br />
		<mx:Panel title="Painel - 3" id="tres" width="150" height="150" x="19" y="74"></p>
<p>		</mx:Panel><br />
		<mx:Panel title="Painel - 4" id="quatro" width="250" height="250" x="19" y="74"></p>
<p>		</mx:Panel><br />
		<mx:Button mouseDown="adicionaUm()" x="126" y="10" label="Painel 1"/><br />
		<mx:Button mouseDown="adicionaDois()" x="10" y="10" label="Remove todos"/><br />
		<mx:Button mouseDown="adicionaTres()" x="205" y="10" label="Painel 2"/><br />
		<mx:Button mouseDown="adicionaQuatro()" x="126" y="40" label="Painel 3"/><br />
		<mx:Button x="205" y="40" label="Painel 4"/></p>
<p></mx:Application><br />

Exemplo 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<mx:Application initialize="addButton();" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="413"><br />
	<mx:Script><br />
		<br />
			import mx.controls.Button;<br />
			import mx.containers.Panel;<br />
			import mx.core.Application;<br />
			import flash.events.MouseEvent;<br />
			public var painel:Panel = new Panel();</p>
<p>			public function add(event:Event):void<br />
			{<br />
				painel.title = "Painel - 1";<br />
				painel.width = 200;<br />
				painel.height = 200;<br />
				painel.x = 40;<br />
				painel.y = 30;<br />
				addChildAt(painel,numChildren -1);<br />
			}</p>
<p>			public var botao:Button = new Button();<br />
			public function addButton():void<br />
			{<br />
				botao.label = "Adicionar Painel";<br />
				botao.x = 5;<br />
				botao.y = 5;<br />
				addChildAt(botao,0);<br />
				botao.addEventListener(MouseEvent.MOUSE_DOWN,add);<br />
			}<br />
		<br />
	</mx:Script></p>
<p></mx:Application><br />

Flex

Usando ícones,imagens em aplicações Flex, como?

Essa é a dúvida mais comum que existe em lista de discussões ao redor do mundo, muitos desenvolvedores tem sempre a básica e e talvez a mais besta das dúvidas. Eu já vi poucas na Flex-Brasil, porém para que não façamos igual ao resto do mundo, eu para simplicar a explicação, postei as soluções possíveis de serem usadas.

Importando direto de um diretório

1
<mx:Image source="diretorio/minhaImagem.jpg"/>

NOTE: ” Flex rendeniza os seguintes formatos SWF, GIF, JPG, PNG, illustrator, SVG “.

Importando direto para dentro da aplicação via MXML

1
2
 <!-- Faze-se um @Embed -->
<mx:Image source="@Embed('diretorio/imagem.png')"/>

Importando direto para dentro da aplicação via AS3

Usar via AS3 é também da mesma forma, você vai inserir meta-tags para chamar os arquevos externos.

1
2
3
4
5
6
7
8
9
10
11
12
13
<mx:Script>
 
 
	    [Embed(source="imagem.png")]
            //A imagem inserida, precisa ser bindável para que possa ser acessado dentro da aplicação como um Objeto.
            [Bindable]
            public var MinhaImagem:Class;
 
 
 
</mx:Script>
 
<mx:Imagem source="{MinhaImagem}"/>

Importando direto para aplicação via SWF acessando Objeto (MovieClip,Button ou Graphic)
Essa última opção eu darei mais detalhes bem mais específicos para outro post que está vindo, “Flex e Flash andam juntos”.

Mas basicamente funciona da seguinte maneira, Tenha-se um Objeto dentro do filme que você tem lá no Flash 8 IDE, então você, exporta para Actionscript atribuindo um Linker, aka “linkage”. Exporte o SWF. e importe assim.

1
2
3
 
<!-- imagine hipoteticamente que eu tenha aqui um swf já no meu diretório da aplicação Flex -->
<mx:Image source="@Embed(source='filmeFlash8.swf', symbol='meuMC_')"/>

NOTE: Você importando esse Simbolo dentro do swf externo para o Flex, você não pode interagir com ele, pois para fazer isso você precisa de outro detalhe que é comunicar com swf do flash 8 você precisa do LocalConnection para o tal.

Notícias

Parabéns

Pela falta de criatividade no momento, fiz um bannerzinho para avisar a todos que hoje tou completando mais um ano de vida. Creio eu que foi mais um ano de aprendizados, erros e acertos.

Requer o Flash Player

Obrigado a todos os e-mails, comentários.

Se queser me dá um presente. sonho de consumo.

Flex

Alterando preloader da aplicação Flex

Uma forma bem divertida e solução que se faz em 2 minutos é a troca da mensagem do preloader do tradicional loading… para uma mensagem costumisável.
Detalhe para que a cor da barra de progressão pode ser modificada, mas por default ela fica de acordo com o background da aplicação.

NOTE: Existe um bug na propriedade initializingLabel, que modofica o famoso label “initializing” para o costumisável. No Flex 2.1 isso já foi modificado, mas caso você queira modificar, basta extender e recriar.

Segue exemplo:

Requer o Flash Player

Código fonte: Clique Aque

AS 3.0/ Flex

Populando mx:ComboBox e mx:List usando XML

Um exemplo prático de como usar XML para popular um comboBox e um List, solução aplicável em 15minutos.
O que mais demorou para eu fazer foi o XML, que peguei pelo site da wikiPedia.org, que por sinal tem uma vasta lista a qual conversando com Lucas Ferreira, que até tinha me perguntado se eu tinha algo já pronto. Acredito que depois dessa listagem eu começe a fazer novos componentes para nossa situação brasileira de listagem de cidades a partir do estado selecionado.

Requer o Flash Player

Para pegar o código fonte, clique aqui

Actionscript/ AS 3.0/ Flex

Java 5.0 vs. Actionscript 3.0 : comparando a syntax

Yakov Ian, publicou em seu blog uma comparação exata entre as similaridades do Java 5.0 com o Actionscript 3.0.
Como você sabe Actionscript 3.0 ganhou muito mais capacidades que sua versão anterior, tanto que agora está bem mais similar ao ECMAscript e com muitas funcionabilidades.
Na minha visão de programador Java, eu ainda não tenho, se algum dos leitores que visitam o blog tiver vasta experiência queria saber se realmente confere as informações abaixo. Pois minha experiência com a linguagem são apenas de níveis acadêmicos. Nunca usei em nível comercial ou 100% fulltime.
Visando divulgar similaridades ou diferenças, resolvi publicar aqui. Fiz algumas adaptações mas pela hora e também por coisas a serem feitas, vai parte do que ele comentou.

Conceito e construtores

Java 5.0

ActionScript 3.0

Empacotamento de biblioteca de classes

.jar

.swc

Inheritance

class Employee extends Person{…}

class Employee extends Person{…}

Declaração de variáveis e Incialização

String firstName=”John”;

Date shipDate=new Date();

int i;

int a, b=10;

double salary;

var firstName:String=”John”;

var shipDate:Date=new Date();

var i:int;

var a:int, b:int=10;

var salary:Number;

Variáveis não declaráveis

n/a

É equevalente a "any", qualquer tipo. Por exemplo se você declarar uma variável mas não especificar o seu tipo, é aplicado o *.

O valor padrão é: undefined

var myVar:*;

Variáveis de escopo

block: Declara-se com {},
local: Declara-se com um método ou com um bloco.

 

member: Declara-se com nível de class

 

Não existe variáveis globais

Não existe bloco de escopo, o máximo que pode se aplicar é uma função.

 

local: Declara-se junto de uma função
Por exemplo:
public function myFunction():void
{
var myVar:String;
}

member: Declara-se no nível da classe.

Se uma variável é usada fora de uma função ela tem escopo global, tendo por exemplo uso privada ou publica.

Por exemplo:

public var myVar:Number;
private var myVariable:Number;

Strings

Immutable, store sequences of two-byte Unicode characters

Immutable, store sequences of two-byte Unicode characters

Terminating statements with semicolons

A must

If you write one statement per line you can omit it.

Strict equality operator

n/a

===

for strict non-equality use

!==

Constant qualifier

The keyword final

 

final int STATE=”NY”;

The keyword const

 

const STATE:int =”NY”;

Type checking

Static (checked at compile time)

Dynamic (checked at run-time) and static (it’s so called ‘strict mode’, which is default in Flex Builder)

Type check operator

instanceof

is – checks data type, i.e. if (myVar is String){…}

The is operator is a replacement of older instanceof

The as operator

n/a

Similar to is operator, but returns not Boolean, but the result of expression:

var orderId:String=”123”;

var orderIdN:Number=orderId as Number;

trace(orderIdN);//prints 123

Primitives

byte, int, long, float, double,short, boolean, char

all primitives in ActionScript are objects.
Boolean, int, uint, Number, String

The following lines are equevalent;

var age:int = 25;

var age:int = new int(25);

Complex types

n/a

Array, Date, Error, Function, RegExp, XML, and XMLList

Array declaration and instantiation

int quarterResults[];

quarterResults =
new int[4];

 

 

int quarterResults[]={25,33,56,84};

 

var quarterResults:Array
=new Array();

or

var quarterResults:Array=[];

 

var quarterResults:Array=
[25, 33, 56, 84];

AS3 also has associative arrays that uses named elements instead of numeric indexes (similar to Hashtable).

The top class in the inheritance tree

Object

Object

Casting syntax: cast the class Object to Person:

 

Person p=(Person) myObject;

 

var p:Person= Person(myObject);

or

var p:Person= myObject as Person;

upcasting

class Xyz extends Abc{}

Abc myObj = new Xyz();

class Xyz extends Abc{}

var myObj:Abc=new Xyz();

Un-typed variable

n/a

var myObject:*

var myObject:

packages

package com.xyz;

class myClass {…}

package com.xyz{

class myClass{…}

}

ActionScript packages can include not only classes, but separate functions as well

Class access levels

public, private, protected

if none is specified, classes have package access level

public, private, protected

if none is specified, classes have internal access level (similar to package access level in Java)

Custom access levels: namespaces

n/a

Similar to XML namespaces.

namespace abc;

abc function myCalc(){}

or

abc::myCalc(){}

use namespace abc ;

Console output

System.out.println();

// in debug mode only

trace();

imports

import com.abc.*;

import com.abc.MyClass;

import com.abc.*;

import com.abc.MyClass;

packages must be imported even if the class names are fully qualified in the code.

Unordered key-value pairs

Hashtable, Map

 

Hashtable friends = new Hashtable();

 

friends.put(”good”,
“Mary”);

friends.put(”best”,
“Bill”);

friends.put(”bad”,
“Masha”);

 

String bestFriend= friends.get(“best”);

// bestFriend is Bill

Associative Arrays

 

Allows referencing its elements by names instead of indexes.

var friends:Array=new Array();
friends[”good”]=”Mary”;

friends[”best”]=”Bill”;

friends[”bad”]=”Masha”;

 

var bestFriend:String= friends[“best”]

 

friends.best=”Alex”;

 

Another syntax:

var car:Object = {make:”Toyota”, model:”Camry”};

trace (car[”make”], car.model);

// Output: Toyota Camry

Hoisting

n/a

Compiler moves all variable declarations to the top of the function, so you can use a variable name even before it’s been explicitly declared in the code.

Instantiation objects from classes

Customer cmr = new Customer();

Class cls = Class.forName(“Customer”);

Object myObj= cls.newInstance();

var cmr:Customer = new Customer();

var cls:Class = flash.util.getClassByName(”Customer”);
var myObj:Object = new cls();

Private classes

private class myClass{…}

There is no private classes in AS3.

 

Private constructors

Supported. Typical use: singleton classes.

Not available. Implementation of private constructors is postponed as they are not the part of the ECMAScript standard yet.

To create a Singleton, use public static getInstance(), which sets a private flag instanceExists after the first instantiation. Check this flag in the public constructor, and if instanceExists==true, throw an error.

Class and file names

A file can have multiple class declarations, but only one of them can be public, and the file must have the same name as this class.

A file can have multiple class declarations, but only one of them can be placed inside the package declaration, and the file must have the same name as this class.

What can be placed in a package

Classes and interfaces

Classes, interfaces, variables, functions, namespaces, and executable statements.

Dynamic classes (define an object that can be altered at runtime by adding or changing properties and methods).

n/a

dynamic class Person {

var name:String;

}

//Dynamically add a variable // and a function

Person p= new Person();

p.name=”Joe”;

p.age=25;

p.printMe = function () {

trace (p.name, p.age);

}

p.printMe(); // Joe 25

function closures

n/a. Closure is a proposed addition to Java 7.

myButton.addEventListener(“click”, myMethod);

A closure is an object that represents a snapshot of a function with its lexical context (variable’s values, objects in the scope). A function closure can be passed as an argument and executed without being a part of any object

Abstract classes

suporta

n/a

Function overriding

suporta

Supported. You must use the override qualifier

Function overloading

suporta

Not supported.

Interfaces

class A implements B{…}

interfaces can contain method declarations and final variables.

class A implements B{…}

interfaces can contain only function declarations.

Exception handling

Keywords: try, catch, throw, finally, throws

 

Uncaught exceptions are propagated to the calling method.

Keywords: try, catch, throw, finally

 

A method does not have to declare exceptions.

Can throw not only Error objects, but also numbers:

 

throw 25.3;

 

Flash Player terminates the script in case of uncaught exception.

 

Regular expressions

Suporta

Suporta

AS 3.0/ Flex

Design patters avançado em Actionscript 3

Tentando me manter o espírito organizado, comprei o livro do Joey com o Denny, dei uma folheada e o livro trás várias supressas ótimas, que com certeza irá agregar mais conteúdo a esse blog e a mim mesmo como pessoa.

O mais empolgante de tudo isso, é que com tão pouco tempo ótimos livros tem sido publicados por autores consagrados. E como sempre os últimos livros escritos pelo Joey não tem foco apenas no Flex 2, mas sim no Flash Player 9, que englobam Flash 9 IDE que será lançada logo no início do primeiro semestre de 2007 e o atual Flex 2.

Eu aconselho fortemente que se você procura qualidade e legibilidade em seu código, precisa lêr esse livro.

[Atualizado]
Para quem deseja comprar o livro, você pode adquerir direto do site da Peachpit, os impostos para o livro são gratúitos perante as leis brasileiras de importação.
Confira detalhes do livro aqui: http://www.peachpit.com/bookstore/product.asp?isbn=0321426568&rl=1

Flex/ Notícias

Curso de Flex 2 em curitiba

No dia 11 de dezembro, irei à curitiba ministrar curso de Flex 2 básico na ENG DTP de lá. Quem estiver disponível para me mostrar a cidade ficarei muito grato, já que será esta, minha primeira vez na cidade.
Estou animado para ver a comunidade paranaense e discutir mais sobre o que eles acham do Flex.
Se você tiver interesse em participar do curso, não sei informar se ainda existem vagas, mas conversa com o pessoal da lá que acredito que possa dá um jeito.


Oportunidades de emprego

Oportunidade na Mundo Livre LTDA

A Mundo Livre S.A, desenvolve sistemas conceitos em RIA em (Flex,Flash) com, vasto uso de integração com uso de .Net.
Ela está a procura de 2 programadores 1 programador Flex (Júnior) e 1 programador Flash(Sênior).

Interessados na oportunidade devem enviar seus curriculos para ( vagas@mlweb.com.br ).

Aviso a todos, que os sistemas que a mundo livre desenvolve são para governo do estado de são Paulo, então aplica-se apenas a canidatos que moram em São Paulo. Os conhecimentos referentes a Flex precisam ser Júnior com comprovação de curso oficial.
Para canidatos em Flash, deverá enviar no curriculo links de trabalhos realizados.