Carregando XML com Actionscript 3.0
Neste tutorial iremos aprender como carregar um xml usando Actionscript 3.0, assim iremos entender como o suporte ao xml esta muito mais simples…
Primeiramente iremos criar o XML salvando o mesmo na pasta em que se encontra o arquivo .swf
agenda.xml
<?xml version=”1.0″ encoding=”utf-8″ ?>
<agenda>
<contatos>
<contato>
<nome>Danillo Castilho</nome>
<telefone>1111-1111</telefone>
<celular>2222-2222</celular>
</contato>
<contato>
<nome>Danillo Castilho</nome>
<telefone>3333-3333</telefone>
<celular>4444-4444</celular>
</contato>
</contatos>
<contatos>
<contato nome=”Danillo Castilho” telefone=”5555-5555″ celular=”6666-6666″ />
<contato nome=”Danillo Castilho” telefone=”7777-7777″ celular=”8888-8888″ />
</contatos>
</agenda>
Agora iremos ao actionscript, primeiramente iremos criar as variaveis e as propriedados para carregar o XML
System.useCodePage = true;
var xml:String = “agenda.xml”;
var xmlRequest:URLRequest = new URLRequest(xml);
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.load(xmlRequest);
Com isto o xml já será carregado! para visualização teremos de aplicar um listener no URLLoader…
xmlLoader.addEventListener(Event.COMPLETE, readXML);
e depois iremos navegar no XML, esta navegação será de 2 modos para visualizar o poder do Actionscript 3.0
function readXML(e:Event):void {
var i:int = 0;
var contacts:XML = new XML(e.target.data);
contacts.ignoreWhitespace = true;
var list:XMLList = contacts.contatos;
trace(“FIRST LIST\n”);
for( i = 0; i < list[0].contato.length(); i++ ){
trace(“————————————————–”);
trace(list[0].contato[i].nome);
trace(list[0].contato[i].telefone);
trace(list[0].contato[i].celular);
trace(“————————————————–\n”);
}
trace(“SECOND LIST\n”);
for( i = 0; i < list[1].contato.length(); i++ ){
trace(“————————————————–”);
trace(list[1].contato[i].@nome);
trace(list[1].contato[i].@telefone);
trace(list[1].contato[i].@celular);
trace(“————————————————–\n”);
}
}
Assim teremos a leitura do XML por completo:
System.useCodePage = true;
var xml:String = “agenda.xml”;
var xmlRequest:URLRequest = new URLRequest(xml);
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.load(xmlRequest);
xmlLoader.addEventListener(Event.COMPLETE, readXML);
function readXML(e:Event):void {
var i:int = 0;
var contacts:XML = new XML(e.target.data);
contacts.ignoreWhitespace = true;
var list:XMLList = contacts.contatos;
trace(“FIRST LIST\n”);
for( i = 0; i < list[0].contato.length(); i++ ){
trace(“————————————————–”);
trace(list[0].contato[i].nome);
trace(list[0].contato[i].telefone);
trace(list[0].contato[i].celular);
trace(“————————————————–\n”);
}
trace(“SECOND LIST\n”);
for( i = 0; i < list[1].contato.length(); i++ ){
trace(“————————————————–”);
trace(list[1].contato[i].@nome);
trace(list[1].contato[i].@telefone);
trace(list[1].contato[i].@celular);
trace(“————————————————–\n”);
}
}
Até a próxima pessoal!
Movimentos simulando Wii da Nintendo
Beleza pessoal? a um tempo atrás acessando alguns sites, achei muito boa a ideia o game Wario Land para o console Wii da Nintendo!
http://www.wariolandshakeit.com/launch/index.html
Hoje criei uma pequena classe simulando a aplicação gerada no menu do site! bem simples!
Usaremos uma estrutura simples para a aplicação imports, variaveis, construtor e listeners para detectar o movimento.
Usaremos a classe Tweener para fazer movimentos e o link para download da classe esta abaixo:
http://code.google.com/p/tweener/
Agora vamos ao código:
package {
/**
* …
* Danillo Castilho
* PressMove Class – use this class for simulate a wii interactions
*/
// IMPORTS —————————————————————————–
import caurina.transitions.*;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class PressMove extends Sprite {
// VARIABLES ———————————————————————-
// variaveis da classe
var container: Sprite = new Sprite();
var containerView: Sprite = new Sprite();
var actualMouseX: Number = 0;
var directionX: Number = 0;
var directionType: String; // TYPES = RIGHT AND LEFT
var moviments: int = 0;
var intensive: int = 100;
var counterTimer: Timer;
var pctAlpha: Number = 0;
// CONSTRUCTOR ——————————————————————–
public function PressMove() {
createContainer(); // cria os objetos principais
startTimer(); // cria o timer para verificação se o objeto esta sendo movimentado
}
// CREATE OBJECTS —————————————————————–
// cria os containers principais para os testes da aplicação
private function createContainer() {
container.graphics.beginFill(0×000000, 1);
container.graphics.lineStyle(1, 0×000000, 1);
container.graphics.moveTo(0, 0);
container.graphics.drawCircle(10, 10, 40);
container.graphics.endFill();
container.x = 200;
container.y = 200;
container.buttonMode = true;
container.addEventListener(MouseEvent.MOUSE_DOWN, downMouse);
container.addEventListener(MouseEvent.MOUSE_UP, upMouse);
addChild(container);
containerView.graphics.beginFill(0×000000, 1);
containerView.graphics.lineStyle(1, 0×000000, 1);
containerView.graphics.moveTo(0, 0);
containerView.graphics.drawCircle(10, 10, 40);
containerView.graphics.endFill();
containerView.x = 30;
containerView.y = 30;
containerView.alpha = 0;
addChild(containerView);
}
// CREATE TIMER —————————————————————–
// cria o timer para principal que irá verificar se o objeto esta sendo movimentado
private function startTimer() {
counterTimer = new Timer(intensive);
counterTimer.addEventListener(TimerEvent.TIMER, downMovimentValue);
counterTimer.start();
}
// LISTENERS ——————————————————————–
// listeners da aplicação
// listener usado quando o objeto segura o click do mouse
private function downMouse(evt:MouseEvent) {
container.addEventListener(MouseEvent.MOUSE_MOVE, moveMouse);
}
// listener usado quando o objeto solta o click do mouse
private function upMouse(evt:MouseEvent) {
container.removeEventListener(MouseEvent.MOUSE_MOVE, moveMouse);
Tweener.addTween(container, { x: 200, time: 0.2 } );
}
// listener usado quando segura o click e movimenta o mouse
private function moveMouse(evt:MouseEvent) {
var mouseMoviment:Number = stage.mouseX;
pctAlpha = moviments / 100; // porcentagem usada para criar o alpha do objeto que verifica o movimento
// verifica a posição do mouse antigo e atual para acionar uma direcao e acrescentar valores caso o mouse recebe movimentos continuos de direira e esquerda
if (actualMouseX < mouseMoviment) {
if (directionType == “RIGHT”) {
moviments++;
}
Tweener.addTween(container, { x: 210, time: 0.2 } );
directionType = “LEFT”;
} else if (actualMouseX > mouseMoviment) {
if (directionType == “LEFT”) {
moviments++;
}
Tweener.addTween(container, { x: 190, time: 0.2 } );
directionType = “RIGHT”;
}
Tweener.addTween(containerView, { alpha: pctAlpha, time: 0.2 } );
actualMouseX = stage.mouseX;
}
// verifica o movimento do objeto caso não esteje ativo o valor alpha será diminuido constantemente..!
private function downMovimentValue(evt:TimerEvent) {
if (moviments <= 0) {
moviments = 0;
Tweener.addTween(containerView, { alpha: 0, time: 0.2 } );
} else {
moviments–;
pctAlpha = moviments / 100;
Tweener.addTween(containerView, { alpha: pctAlpha, time: 0.2 } );
}
}
}
}
Pronto..! agora é só usar.. e pensar em coisas criativar para usar a aplicação!! já pensei algumas malucas.. e logo mais faço o post do código! valhew!!
Papervision + Actionscript 3.0 + AMFPHP
Beleza pessoal? abaixo uma aplicação que estou fazendo baseada no coverflow gerado para o youtube live!
http://www.youtube.com/live
A estrutura não é complicada! papervision para a base 3D e rotação dos objetos, as3 para as aplicações de conexão, preloader, entre outras.. e amfphp como gateway de conexão php para receber os dados dinamicamente! lembrando que para este tipo de aplicação é necessário um ondemmand.. aplicação sobre demanda.. para que fique leve e sejam carregados apenas objetos que realmente precisem ser visualizadas pelo user!

Papervision
Logo.. mais o AS3 é de vocês… valhew galera..!! até mais…
Alguns jobs.. e Spark Project.
Beleza pessoal? segue abaixo alguns links de trabalhos realizado atualmente!
http://www.brastemp.com.br/promocaoative/
http://www.sucrilhos.com.br/site2008/
http://www.milcasmurros.com.br
E abaixo.. uma library muito boa de Actionscript e muito mais.!! chamada de Spark Project, realmente as aplicações são de deixar muitos.. de cabelo em pé..!
http://www.libspark.org/browser/as3/FLARToolKit/trunk?rev=1947
Valhew pessoal… até a próxima.!
PV3D – Hello World
Pessoal, hoje iremos ver o hello world do Papervision 3D apenas um simple plane na tela!
package {
/**
* …
* Danillo Castilho
* danilo@simplebrasil.com
*
*
*/
//IMPORTS—————————————————————————
import org.papervision3d.materials.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.materials.special.*;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.objects.special.*;
import org.papervision3d.cameras.*;
import org.papervision3d.events.*;
import org.papervision3d.view.*;
import org.papervision3d.scenes.*;
import org.papervision3d.render.*;
import org.papervision3d.core.effects.*;
import org.papervision3d.core.geom.*;
import org.papervision3d.lights.*;
import flash.accessibility.*;
import flash.display.*;
import flash.errors.*;
import flash.events.*;
import flash.external.*;
import flash.geom.*;
import flash.media.*;
import flash.net.*;
import flash.system.*;
import flash.text.*;
import flash.utils.*;
import flash.xml.*;
// PUBLIC CLASS ————————————————————————-
public class PV3D extends Sprite {
// VARIABLES ———————————————————————–
private var viewport: Viewport3D = new Viewport3D(0,0,true,true);
private var scene: Scene3D = new Scene3D();
private var camera: Camera3D = new Camera3D();
private var renderEngine: BasicRenderEngine = new BasicRenderEngine();
private var objMaterial: flashIcon;
private var arrMaterial: Array = new Array();
private var arrPlanes: Array = new Array();
// CONSTRUCTOR ——————————————————————-
public function PV3D() {
createPapervision(); // CRIAR APLICAÇÕES PRINCIPAIS DO PAPERVISION
}
// LISTENERS ———————————————————————–
private function render(evt:Event):void {
renderEngine.renderScene(scene, camera, viewport);
}
// ADD’S —————————————————————————-
private function createPapervision() {
addChild(viewport); // ADD VIEWPORT AO PALCO
stage.addEventListener(Event.ENTER_FRAME, render); // LISTENER PADRÃO DO PAPERVISION
createPlane(); // CRIAR OBJETOS DO PAPERVISION
}
private function createPlane() {
objMaterial = new flashIcon(); // CRIA UM OBJETO flashIcon QUE É UM MOVIECLIP QUE ESTA NA LIBRARY
arrMaterial[0] = new MovieMaterial(objMaterial, true); // CRIA UM MATERIAL
arrMaterial[0].animated = true;
arrMaterial[0].oneSide = true;
arrMaterial[0].interactive = true;
arrPlanes[0] = new Plane(arrMaterial[0], objMaterial.width, objMaterial.height, 2, 2); // CRIA PLANE
scene.addChild(arrPlanes[0]); // ADICIONA PLANE AO SCENE 3D
}
}
}
Super simples, agora é só colocar a classe como ducument class do filme swf e atribuir em preferences as app’s do papervision!
http://code.google.com/p/papervision3d/
Fuiss… até a próxima.!
Mil Casmurros
Aplicação criada para o site www.milcasmurros.com.br
Links Necessários
Beleza pessoal.?? meu primeiro post no blog..! abaixo alguns links bacanas referente actionscript 3.
http://www.flashdevelop.org/wikidocs/index.php?title=Features:Interface
Fuiss… na próxima iremos colocar a mão na massa!
Deixe um comentário