SÁVIO PONTE (39 pts)

GUILHERME SCHEIBE (49 pts)

NETO LEAL (116 pts)

SASHA GUDEY (235 pts)

RÔMULO NUNES (32 pts)

STICKMAN (155 pts)

JOÃO NETO (78 pts)

KEN AWAMURA (130 pts)

ALEXANDRE PORTO (1281 pts)

RICARDO TEIXEIRA (40 pts)

RODRIGO AMARAL (56 pts)

LEANDRO AMANO (83 pts)
Treinamento PontoFlash de Flash e ActionScript

Como verificar a taxa de download da conexão e redirecionar para outro filme dependendo do resultado?

Posso criar um campo de texto do tamanho do meu texto?

Pra que serve o comando MovieClip.prototype?

Como justificar um texto e criar uma barra colorida?

Como fazer aparecer uma imagem por baixo de uns quadrados em tweening?

Como se faz um menu em cascata?

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

Preciso criar um sistema que busque no banco de dados e retorne ao Flash.

Como fazer para que meu flash aberto com Load Movie tenha fundo transparente.

Existe alguma maneira de atualizar automaticamente um cálculo matemático?

Como fazer para que a cada "refresh" da página, apareça um banner diferente?

Como faço para desabilitar a mãozinha do mouse em filmes que estão em levels inferiores?

O que é um Path Absoluto e um Path Relativo?

Quero desativar os botões de cenas já visitadas.
Conversão de Datas e Horas em Servers Estrangeiros (Flash+Asp).

TV Scan Lines - Fireworks

Color changer

Executar funções de JavaScript (Flash+JavaScript).

Detecção do FlashPlayer.

Objeto Array

Botões comutadores ou com duas ações.

Rayoflight.

Plugins variados para seu trabalho em design

Clica nuaicon - Photoshop 6

Loops Alternados (Objeto Sound).

Tornando movieclips arrastáveis (drag movieclip)
Multipletrail

Drag limitado

Slide menu

Txt com preloader

3d particle

Redemoinho

Book of pages

Embaralhar texto

Adivinhação

shared Objects

False Mask

Vela
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