MANGOOST (80 pts)

MUZAK (45 pts)

GÉRIO (93 pts)

FÁBIO DUARTE (79 pts)

SÁVIO PONTE (39 pts)

STICKMAN (155 pts)

PANDOGO (82 pts)

NILTON BICALHO (61 pts)

BÁRBARA TOSTES (64 pts)

DEN IVANOV (260 pts)

SASHA GUDEY (235 pts)

JONAS GALVEZ (521 pts)
Treinamento PontoFlash de Flash e ActionScript

Quero que a hora, minutos e segundos de meu relógio tenham sempre duas casas decimais

Como construir um menu como o do http://www.wireframe.co.za?

Como alterar a cor de um botão depois de clicado e ocorrido o evento?

Como identificar o ponto de registro em um objeto criado por actionscript no MX?

Como fazer uma busca de palavras num arquivo do Flash?

É possível usar campos dinâmicos em uma máscara?

Como desabilitar botões do Level0, quando abro um arquivo no level1?

E o FlashMX não aceita eval para gerar uma variável?

Como fazer um objeto ter um movimento elástico?

Como dar um fade (alpha) num movieclip clicando num botão?

Aula teórica de interação flash + script.

Para recuperar recuperar variaveis no url com o Flash.

Para que serve o ONIO SKIN?

Quero que mouse seja substituído por um mocieclip apenas num determinado local.
Formulário de e-mail com ASP.

Criando um Editor HTML com o MM Flash

Imagem Pixel a Pixel no PhotoShop.

Criação de letras transparentes - Fireworks

Carregador inteligente no Flash 5.

Objeto XML - importando para o Flash

Pre-loader simples.

Janelas pop-up e semi-full no flash

MP3 player

Sistema de newsletter utilizando Flash + ASP.

Janelas tipo Windows com Swap Depth

Formulário usando Flash e PHP
BeeJay

Lights many

Menu XML

Streching menu

Tensionchain

Ping Pong

Ir e voltar

Menu Flash e XML

Sashacircle 1

Relógioanalógico

Botão comutador

Number sorter
HOME | TUTORIAIS
Menu dinâmico a partir de um xml.
por Pedro Claudio

Surgiu uma questão no grupo de discussão PontoFlash que provocou a criação deste script.

Como fazer um menu dinâmico a partir de um xml (attachMovie/xml)?

Vamos fazer as duas partes.

parte 1 - flash
parte 2 - xml

PARTE 1

/*
Crie um clip com uma caixa de texto instaciado por label, abra a Library clique com o botão direito no clip e em Properties>Advanced, marque a opção Export for ActionScript e em Identifier ponha ibase.
*/

//previnir possivel erro de leitura de acentos

System.useCodepage = true;
// declara novo objeto menu
var menuXML = new XML();
//ignora espaços em branco no xml
menuXML.ignoreWhite = true;
//carrega o xml
menuXML.load("menu.xml");
//função será executada após o termino do carregamento do xml
menuXML.onLoad = function(ok) {
if (ok) {
//caso a carga do xml tenha tido sucesso inicia a criação do menu
montaMenu();
} else {
/* caso a carga do xml tenha falhado vamos sair do flash iniciar uma outra ação. aqui estou chamando uma pagina e saindo flash mas pode ser carregado um swf, que não é o que vamos ver */

getURL("menuErro.html");
}
};
//aqui começamos a montar o menu
function montaMenu() {
/* a posição y é iniciada com numero negativo porque logo abaixo vou incrementa-lo com mesmo valor posito acrescido de um, então o 1º item do menu terá a propriedade _y = 1 aqui está com 24 pois é a altura do mc que vamos atachar */
var posY:Number = -24;
/* chidNodes se refere ao 1º nó do nó atual como o nó atual é o XML a variavel node vai receber as tags pai, que é o corpo prinicipal do menu */
var node = menuXML.childNodes;
for (var i = 0; i<node.length; i++) { // node.length é a quantidade de tags pai
posY += 24+1; // incremento a posição y do menu
v=(node[i].hasChildNodes())?1:2;
/*
agora chamaremos uma função para criar um item do menu pai. passamos os dados necessários para criação de cada item por parâmentro. esse paramentro é uma variavel do tipo Object possuindo 4 objetos:
1º objeto - _x do item de menu que será criado
2º objeto - _y do item de menu que será criado
3º objeto - apenas para identificar que tipo de item estamos criando, submenu(0), menu(1) ou menu sem submenus(2)
4º objeto - atributos - vamos entender esse objeto.
node[i] possui como valor uma tag pai, então veja uma de nossas tags pai
<node id="M1itemMenu" titulo="Fale Conosco" link="3" />
para acessarmos os valores de id,titulo e link usamos a propriedade xml attributes 5º objeto - aqui é o segredo do menu, este obejto lembrará o item
de menu e os itens submenu
* eu poderia fazer chamar essa função assim:
dados=new Object();
dados.X=1;
dados.Y=posY;
dados.atributos=node[i].attributes;
dados.node=node[i];
setAction(dados);
porém o flash permiti outra opção na criação de objetos da seguinte forma
variavel={objeto1:valor1,objeto2:valor2};
*/
setAction({X:1, Y:posY, v:v, atributos:node[i].attributes, node:node[i]});
}
}
function setAction(dados) {
// criamos o item de menu e setamos algumas variaveis e propriedades para ele
_root.attachMovie("ibase", dados.atributos.id, dados.atributos.depths+50);
_root[dados.atributos.id].v = dados.v;
_root[dados.atributos.id].Id = dados.atributos.id;
_root[dados.atributos.id].link = dados.atributos.link;
_root[dados.atributos.id]._x = dados.X;
_root[dados.atributos.id]._y = dados.Y;
_root[dados.atributos.id].label = dados.atributos.titulo;
_root[dados.atributos.id].node = dados.node;
// nosso segredo
novamente agora o item de menu se lembrerá de seu pai ou seus filhos
switch(dados.v){
case 2: //menu sem filhos
myRelease(_root[dados.atributos.id]);
// associamos uma ação ao evento onRollOver, mouse sobre o item do menu
_root[dados.atributos.id].onRollOver = function() {
this.myClear();
// será executado um metodo MovieClip - nós
vamos cria-lo mais a frente
};
break;
case 1:
// menu com submenus

//associamos uma ação ao evento onRollOver, mouse sobre o item do menu
_root[dados.atributos.id].onRollOver = function() {
this.myClear();
// será executado um metodo MovieClip - nós
vamos cria-lo mais a frente
// chamos a função que vai criar os submenus
montaSubmenu({node:this.node, y:this._y, h:this._height, w:this._width});
};
break;
default: //submenu
myRelease(_root[dados.atributos.id]);
break;
}
}
function myRelease(x){
//associamos uma ação ao evento onRelease
x.onRelease = function() {
this._parent.gotoAndStop(this.link);
this.myhide();
// ao solta o botão do mouse será executado um
metodo MovieClip - nós vamos cria-lo mais a frente
};
}
function montaSubmenu(item) {
var posY:Number = item.y-(item.h+1);
if (item.node.hasChildNodes()) {
for (var i = 0; i<item.node.childNodes.length; i++) {
posY += item.h+1;
// veja que o submenu que será criado recebe node completo do pai
setAction({node:item.node, atributos:item.node.childNodes[i].attributes, X:(item.w+1), Y:posY, v:0});
}
}
}
MovieClip.prototype.myhide = function() {
//metodo myhide que irá
fechar um submenu
if (this.node.hasChildNodes()) {
// perguntamos ao MovieClip se ele tem irmãos

xmlNode = this.node.childNodes;
for (var i = 0; i<xmlNode.length; i++) {
/*para o MovieClip que está em execução não seja excluido antes de excluir seus irmãos vamos testa-lo*/
if (xmlNode[i].attributes.id != this.Id) {
this._parent[xmlNode[i].attributes.id].kill();
// executamos um outro metodo que criaremos
}
}
this.kill();
}
};
MovieClip.prototype.kill = function() {
//metodo kill que apenas vai remover o movie clip
this.swapDepths(1048000);
this.removeMovieClip(); //destrói o MovieClip do palco
};
MovieClip.prototype.myClear = function() {
//metodo que remove todos os submenu exceto os que são filhos do menu atual
xmlNode = this._parent.menuXML.childNodes;
for (var i = 0; i<xmlNode.length; i++) {
if (xmlNode[i].attributes.id != this.node.attributes.id &&
xmlNode[i].hasChildNodes) {
nodeitem = xmlNode[i].childNodes;
for (var j = 0; j<nodeitem.length; j++) {
this._parent[nodeitem[j].attributes.id].kill();
}
}
}
};

PARTE 2

Atributos id e depths são únicos não podendo existir duplicidade.

<?xml version="1.0" encoding="utf-8"?>
<node id="M0itemMenu" titulo="Produtos" depths="0" link="">
<node id="S0M0itemMenu" titulo="Clips" depths="1" link="2"/>
<node id="S1M0itemMenu" titulo="Site" depths="2" link="2"/>
</node>
<node id="M1itemMenu" titulo="Fale Conosco" depths="3" link="2" />
<node id="M2itemMenu" titulo="Parceiros" depths="4" link="">
<node id="S0M2itemMenu" titulo="Ponto Flash" depths="5" link="3"/>
</node>
<node id="M3itemMenu" titulo="Início" depths="6" link="1" />

Baixe aqui os arquivos do tutorial



Devido à reformulação implementada no site, pode ser que você encontre alguns links quebrados. Por favor, ajude-nos a corrigir eventuais problemas nos informando links quebrados
0 comentário