Menu Dinâmico Flash+XML

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

Parte 1 = Flash
—————————————————————

/*
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 = XML

<?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″ />

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

Colaboração: Pedro Claudio

Coca-Cola lança série limitada de garrafas de alumínio

Série limitada que une as culturas apresenta oito garrafas temáticas, com identidades visuais assinadas por designers chineses e músicas criadas por artistas ocidentais.

Em homenagem aos Jogos Olímpicos de Pequim 2008, a Coca-Cola, mais tradicional patrocinadora do movimento olímpico, revestiu sua consagrada garrafa contour com uma moderna mistura de grafismo e música, para levar ao público um conjunto de mensagens positivas que só a mais conhecida marca de refrigerante do planeta e o maior evento de congraçamento entre os povos são capazes de despertar em âmbito global. O resultado é a coleção “WE8 – União de dois mundos”, série limitada que apresenta oito versões estilizadas de garrafas de alumínio de Coca-Cola.

O nome “WE8 – União de dois mundos” nasceu da idéia de colaboração artística entre Ocidente e Oriente, com o uso das iniciais de “West” e “East”. Para criar a coleção, a Coca-Cola convidou artistas para expressar nas embalagens suas visões sobre oito temas relacionados ao espírito olímpico: “Felicidade”, “Perseverança”, “Paz Mundial”, “Momentos Alegres”, “Otimismo”, “Mundo Saudável”, “Harmonia Global” e “Solidariedade”. As criações – inspiradas na visão otimista da plataforma de marketing “Viva o Lado Coca-Cola da Vida” – são assinadas pelos maiores designers da China, que representam o mundo oriental no projeto. Para acompanhar os desenhos, músicos de países ocidentais compuseram especialmente oito canções, em um verdadeiro cruzamento de culturas.

Cada garrafa temática será lançada especialmente em um país. O Brasil foi escolhido como mercado exclusivo da embalagem “Harmonia Global”, que tem identidade visual assinada pela designer Xiao Xue e trilha sonora composta pelo DJ holandês Tiësto. Na definição de Xiao Xue, “Harmonia Global” transmite a existência de paz e harmonia por meio de elementos que, aparentemente, formam contrastes, como o preto e o branco, o animal e o vegetal, o velho e o novo. Os consumidores poderão conseguir a garrafa “Harmonia Global” a partir de 15 de agosto, exclusivamente na rede de cinemas Cinermark. O consumidor que adquirir o combo Mega – com refrigerante, pipoca e chocolate Lacta – leva também a garrafa especial de alumínio, de 250 ml, pagando mais a quantia de R$ 1.

Processo criativo de WE8
A aliança de artes visuais e musicais da coleção WE8 teve início em oito telas em branco – oito garrafas contour em alumínio – e oito temas, refletindo as possibilidades de felicidade e união proporcionadas tanto pela plataforma “Viva o Lado Coca-Cola da Vida” como pelo espírito de celebração do movimento olímpico. Para a criação das identidades visuais, a Coca-Cola convidou cinco artistas individuais – Wang Xu, Jiang Hua, Chen Shaohua, Xin Jing, Xiao Xue – e três equipes de designers gráficos: a Joyn Viscom – que inclui os designers Jian Jiang, Weestar e Meng Ke -; a Milkxhake – com Javin Mo e Wilson Tang – e a MeWe – integrada por Liu Zhi-zhi, Guang Yu e He Jun.

Os artistas foram deixados livres para expressar os temas de maneira pessoal, para que contassem histórias inspiradas em suas experiências de vida e esperanças. Uma vez finalizados os desenhos, as ilustrações foram apresentadas a oito artistas de vanguarda da música, de diferentes países, entre DJs, cantores e produtores, que ficaram responsáveis pelas trilhas sonoras: Tiësto, da Holanda; Benny Benassi, da Itália; Serge Devant, da Rússia; Cesar, da Jamaica, e os norte-americanos Kaskade, Jes, Lucas Prata e Jay-J. O processo criativo musical traz um detalhe que torna as canções ainda mais especiais: a característica seqüência de cinco notas que formam a melodia da premiada propaganda da Coca-Cola “Fábrica de Felicidade”.

A coleção WE8 pode ser conhecida no site http://www.coca-cola.com.br. No endereço, além de descrição do projeto, biografia dos artistas e informações sobre os países em que cada garrafa será comercializada, estão disponíveis para download as imagens das embalagens e suas respectivas trilhas sonoras. Para que o usuário vivencie o conceito de união entre dois mundos proposto no projeto, o site traz ainda a seção “Desenhe Uma Coca-Cola para o Mundo”, com um jogo interativo em que o usuário é desafiado a criar uma nova identidade visual para uma garrafa contour de Coca-Cola, em parceria com participante conectado em outra parte do mundo.

fonte: Vitrine publicitária.

Flash Player falso pode ser detectado pelo usuário

Por IDG News Service/Reino Unido – Publicada em 05 de agosto de 2008

Londres – URL desconhecida e verificação de assinatura digital revelam se instalação do Flash Player é maliciosa, alerta Adobe.

Crackers estão tentando enganar internautas levando-os a baixar softwares maliciosos que se fazem passar pelo Flash Player, alerta a Adobe.A Adobe recomenda que os usuários ignorem links em redes sociais que levem a web sites que supostamente hospedam o Flash Player, já que estes endereços possuem softwares maliciosos.
“Se o download levar a uma URL desconhecida ou a um endereço IP, você deve suspeitar”, diz o alerta no blog da Adobe.
O Twitter é uma das redes exploradas pelos crackers usando um suposto vídeo em Flash, alertou a empresa de segurança de dados Kaspersky, na segunda-feira (04/08)

A tática de fazer um malware se passar por um software legítimo é antiga. Neste caso, a ameaça pode ser maior devido ao uso mais amplo do Flash em web sites, o que requer a instalação ao Player.
Outra tentativa de infectar a máquina do internauta é anunciar um upgrade falso do Flash Player, já que a Adobe divulgou diversas atualizações este ano. A versão mais atual do Flash Player é a 9.0.124.0.
A Adobe ressalta que o Flash Player está disponível em seu site com assinatura digital e validado pelo Windows durante a instalação. Os usuários podem checar se a instalação é original clicando com o botão direito do mouse sobre o instalador. Em seguida, basta selecionar a área “Properties”, depois a aba “digital signatures” onde o nome do Publisher deve ser “Adobe Systems, Incorporated.”

Jeremy Kirk, editor do IDG News Service, de Londres