Author Archive

NativeMenu em AIR (flash)

0saves

Olá, segue abaixo um exemplo comentado de como utilizar menus(como os da maioria dos softwares) em AIR, é um exemplo básico baseado em tutoriais da Adobe.

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
45
46
47
/*
Primeiro crie um arquivo novo(air)
crie um campo de texto com o tamanho que desejar
instancie o campo de texto como "texto" (sem as aspas)
cole o codigo a seguir no primeiro frame
*/
 
// importa	as classes necessarias
import flash.display.NativeMenu;
import flash.display.NativeMenuItem;
import flash.display.NativeWindow;
import flash.desktop.NativeApplication;
 
//declara os 2 items do menu
var Menu01:NativeMenuItem;
var Menu02:NativeMenuItem;
 
if (NativeWindow.supportsMenu)// Se o sistema operacional for windows
{
	stage.nativeWindow.menu = new NativeMenu(); //cria o menu
	stage.nativeWindow.menu.addEventListener(Event.SELECT, selecionouUmItem);//adiciona um evento de seleção no menu
	Menu01 = stage.nativeWindow.menu.addItem(new NativeMenuItem("Primeiro item"));//adiciona o primeiro item no menu
	Menu01.submenu = criaSubMenu(); // adiciona o submenu(que vai ser criado logo abaixo) ao primeiro item
	Menu02 = stage.nativeWindow.menu.addItem(new NativeMenuItem("Segundo item"));//adiciona o segundo item no menu
}
 
if (NativeApplication.supportsMenu)// se o sistema operacionall for mac
{
	Menu01 = NativeApplication.nativeApplication.menu.addItem(new NativeMenuItem("Primeiro item"));//adiciona o primeiro item no menu
	NativeApplication.nativeApplication.menu.addEventListener(Event.SELECT, selecionouUmItem);//adiciona um evento de seleção no menu
	Menu01.submenu = criaSubMenu(); // adiciona o submenu(que vai ser criado logo abaixo) ao primeiro item
	Menu02 = NativeApplication.nativeApplication.menu.addItem(new NativeMenuItem("Segundo item"));//adiciona o segundo item no menu
}
 
function criaSubMenu():NativeMenu
{
	var tmpMenu:NativeMenu = new NativeMenu(); // cria o submenu do primeiro item
	var MenuNovo:NativeMenuItem = tmpMenu.addItem(new NativeMenuItem("Novo"));//adiciona o item "Novo" ao submenu
	var MenuSalva:NativeMenuItem = tmpMenu.addItem(new NativeMenuItem("Salva"));//adiciona o item "Salva" ao submenu
	var MenuSair:NativeMenuItem = tmpMenu.addItem(new NativeMenuItem("Sair"));//adiciona o item "Sair" ao submenu
	return tmpMenu;
}
 
function selecionouUmItem(e:Event)
{
	texto.text = e.target.label // escreve o nome do item selecionado no campo de texto
}

Qualquer duvida é só postar que eu respondo.

Assim que sobrar algum tempo por aqui eu postarei um tutorial (bem detalhado) e com os exemplos, de como utilizar um banco de dados local com o AIR.

Adobe AIR é lançado

0saves

Olá, fiquei um tempo sem postar devido a falta de tempo , mas estou devolta, para quem ainda não sabe o Adobe AIR não é mais beta, ele ja foi lançado.

player : http://get.adobe.com/air/

Como instalar e começar com AIR + Flash : http://www.adobe.com/devnet/air/flash/getting_started.html

Se alguém tiver duvidas de como instalar ou algo do genero, fala ai que eu vou procurar sanar as duvidas.

Alguma sugestão para mudar o editor AS do flash?

0saves

Opa, essa semana eu estava lendo o the flash blog como de costume, e achei um post interessante com o titulo “Help me improve the flash code editor!” (The flash blog – Lee Brimelow) , aqui esta o link: http://theflashblog.com/?p=329 , espero que seja util.

Classe de validação de formularios

0saves

Oi, eu fiquei um tempo sem postar devido a falta de tempo ( muito trabalho) .

Mas ai vai uma classe que poupa muito tempo na validação de formularios

// Teste.as

package alkeller
{
public class Teste
{
private var campos:Array
 
public function Teste()
{
this.campos = new Array();
}
public function adiciona(Campo, Nome)
{
this.campos.push( { campo:Campo, nome:Nome } );
}
public function Verifica()
{
for (var i:int = 0 ; i < this.campos.length; i++)
{
if (
(this.campos[i].campo.text == undefined) ||
(this.campos[i].campo.text == "undefined") ||
(this.campos[i].campo.text == "") ||
(this.campos[i].campo.text == null) ||
(this.campos[i].campo.text == " ")
)
{
return "Preencha o campo " + this.campos[i].nome;
}
}
return true;
}
}
}

E para utilizar é simples:
1º – Crie um movieClip e instancie ele como “bt”(sem as aspas).
2º – Crie 5 campos de texto tipo input e instancie eles como(“cp1″,”cp2″ ……) obs: isso é só um exemplo, pode ser quantos campos você quiser e com o nome que você quiser.
3º – Crie um campo de texto dinamico e instancie ele de resultado
4º – Cole o codigo abaixo no frame
5º – Teste
// Teste.fla 1º frame

 import alkeller.Teste
var ve:Teste = new Teste();
ve.adiciona(cp1,"Campo 1");
ve.adiciona(cp2,"Campo 2");
ve.adiciona(cp3,"Campo 3");
ve.adiciona(cp4,"Campo 4");
ve.adiciona(cp5,"Campo 5");
 
bt.addEventListener(MouseEvent.CLICK,clicou);
function clicou(e:MouseEvent):void
{
if(ve.Verifica() != true)
{
resultado.text = ve.Verifica();
}
else
{
resultado.text = "Tudo preenchido"
}
}

Qualquer duvida é só falar.

Eventos em objetos com Papervision 2.0 (Great White)

0saves

Bom, aqui vai um exemplo simples de como pegar eventos em objetos 3D (papervision), por exemplo clicar num cubo…

1º crie um AS chamado testando_papervision.as, e cole o seguinte codigo:

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.materials.BitmapFileMaterial;
	import org.papervision3d.objects.Cube;
	import org.papervision3d.scenes.MovieScene3D;
 
	public class testando_papervision extends Sprite
	{
		public function testando_papervision()
		{
 
			var rodando = false;
			var cont:Sprite = new Sprite();
			cont.x = stage.stageWidth * 0.5;
			cont.y = stage.stageHeight * 0.5;
			addChild(cont);
 
			var cena:MovieScene3D = new MovieScene3D(cont);
 
			var cam:Camera3D = new Camera3D();
			cam.z = -500;
			cam.zoom = 5;
 
			var mat:BitmapFileMaterial = new BitmapFileMaterial("porquinho1.jpg");
			mat.doubleSided = true;
			mat.smooth = true;
			var cubo:Cube = new Cube(mat,128,128,128);
			cena.addChild(cubo);
			cubo.container.addEventListener(MouseEvent.CLICK,roda);
 
			function roda(e:MouseEvent):void
			{
				if(rodando == false)
				{
					rodando = true
				}
				else
				{
					rodando = false
				}
			}
 
			this.addEventListener(Event.ENTER_FRAME,renderiza)
 
			function renderiza(e:Event):void
			{
				if(rodando == true)
				{
					cubo.rotationY +=5
				}
				cena.renderCamera(cam);
			}
		}
	}
}

Depois crie um Fla vazio e em propriedades , Document Class, escreva: testando_papervision

coloque uma imagem com o nome de porquinho1.jpg com 128px por 128px na mesma pasta

salve tudo e compile o flash.

Quando você clicar no cubo, se ele estiver parado ele vai começar a rodar, e se ele estiver rodando vai parar.

Até a próxima, qualquer duvida comentem.

Como controlar as janelas do AIR

0saves

Controlar as janelas transparentes do AIR é mais fácil do que parece, aqui vão alguns exemplos de como fazer isso:

Fechar

//tendo um movieClip com instanciado de bt_fechar
bt_fechar.addEventListener(MouseEvent.CLICK,sair);
function sair(e:MouseEvent):void{

    stage.nativeWindow.close();

}

Minimizar

//tendo um movieClip com instanciado de bt_minimizar
bt_minimizar.addEventListener(MouseEvent.CLICK,minimizar);
function minimizar(e:MouseEvent):void{

    stage.nativeWindow.minimize();

}

Maximizar

//tendo um movieClip com instanciado de bt_maximizar
bt_maximizar.addEventListener(MouseEvent.CLICK,maximizar);
function minimizar(e:MouseEvent):void{

    stage.nativeWindow.maximize();

}

Restaurar

//tendo um movieClip com instanciado de bt_restaurar
bt_restaurar.addEventListener(MouseEvent.CLICK,restaurar);
function restaurar(e:MouseEvent):void{

    stage.nativeWindow.restore();

}

Mover

//Crie um movieClip com a area para ser usada para arrasta, instancie ele como bt_arrastar
bt_arrastar.addEventListener(MouseEvent.MOUSE_DOWN,arrastar);
function arrastar(e:MouseEvent):void{

    stage.nativeWindow.startMove();

}

Dimensionar

//Crie um movieClip com a area para ser usada para dimensionar, instancie ele como bt_dimensionar
bt_dimensionar.addEventListener(MouseEvent.MOUSE_DOWN,dimensionar);
function dimensionar(e:MouseEvent):void{

    stage.nativeWindow.startResize(NativeWindowResize.BOTTOM_RIGHT);

}

A formatação do código não está das melhores( tudo feito a mão :-P ), com o tempo quero ver se consigo colocar o plugin de formatação de código aqui, ou encontrar algum que formate sozinho e gere o html com as cores e espaços tudo certos, caso alguém tenha uma sugestão ou duvida, comenta ai.

AMFPHPconn Classe de conexão com AMFPHP

0saves

Oi, AMFPHPconn é uma classe desenvolvida por mim para facilitar a conexão com o AMFPHP segue abaixo a classe:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//  AMFPHPconn.as
import mx.remoting.Service;
import mx.services.Log;
 
class AMFPHPconn
{
	public var gateway:String;
	public var log:Log;
	public var servico:String;
	public var Servico:Service;
 
	public function AMFPHPconn (_gateway, _servico, _log)
	{
		this.gateway = _gateway;
		this.servico = _servico;
		this.log = _log;
		this.Servico = new Service(this.gateway, this.log, this.servico, null, null);
	}
}

Para utilizar essa classe é só colocar o arquivo AMFPHPconn.as na mesma pasta do SWF.

um exemplo de como utilizar:

1
2
3
4
5
6
7
8
// importador.as
import mx.remoting.Service;
import mx.services.Log;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;
import mx.remoting.PendingCall;
import mx.remoting.RecordSet;

// no flash:

1
2
3
4
5
6
7
8
9
10
#include "importador.as"
var conn:AMFPHPconn = new AMFPHPconn("http://localhost/amfphp/gateway.php","Login");
// é opcional colocar log
//com log ficaria:
//var conn:AMFPHPconn = new AMFPHPconn("http://localhost/amfphp/gateway.php","Login",new log());
var pc_loga:PendingCall = conn.Servico.loga("armando","keller");
pc_loga.responder = new RelayResponder(this,"rpc_loga",null);
function rpc_loga(re:ResultEvent){
	trace("retornou "+re.result);
}