..:: MX Studio Fóruns ::..: multigaleria de imagens AS3 / XML - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

multigaleria de imagens AS3 / XML como apontar o node correto?

#1 User is offline   abstrato 

  • Group: Membros
  • Posts: 50
  • Joined: 18-January 07

Posted 16 June 2009 - 03:27 AM

Olá Pessoas,

esta é minha primeira tentativa com AS3 e por enquanto ando bastante perdido.

Pretendo criar uma galeria de imagens com diferentes seções, ou seja, uma galeria com botões que me levam pra diferentes categorias de imagens.

Digamos que eu tenho o seguinte XML:

CODE

<GALERIA galeriaTitle="galeria 01">
<IMAGE imageTitle="imageTitle01">feio.jpg</IMAGE>
<IMAGE imageTitle="imageTitle02">muitofeio.jpg</IMAGE>
<IMAGE imageTitle="imageTitle03">aindamaisfeio.jpg</IMAGE>
</GALERIA>
<GALERIA galeriaTitle="galeria 02">
<IMAGE imageTitle="imageTitle01">estranho.jpg</IMAGE>
<IMAGE imageTitle="imageTitle02">maisestranho.jpg</IMAGE>
<IMAGE imageTitle="imageTitle03">aindamaisestranho.jpg</IMAGE>
</GALERIA>


Este XML me dá o nome de cada galeria e o conteúdo de cada uma delas. Os botões no flash são criados a partir de um loop for (os nomes das galerias). Como faço para que cada botão abra o conteúdo específico e relativo de cada galeria? Ou seja, como faço para carregar no botão o valor de seu nó?

Meu código XML até agora:

CODE


//// CREATE CONTAINERS ////

// CREATE MENU CONTAINER //

var menuContainerMC:MovieClip = new MovieClip();

menuContainerMC.x=10;
menuContainerMC.y=300;

addChild(menuContainerMC);


// CREATE IMAGES CONTAINER //

var imagesContainerMC:MovieClip = new MovieClip();

imagesContainerMC.x=10;
imagesContainerMC.y=10;

addChild(imagesContainerMC);


//// LOAD XML ////

var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, whenLoaded);

xmlLoader.load(new URLRequest("XML/roiaXML.xml"));

var xml:XML;

function whenLoaded(evt:Event):void {
xml=new XML(evt.target.data);
var mySetsList:XMLList=xml.children();


//// MENU BUTTONS ////

// POSITIONING BUTTONS INSIDE MENU CONTAINER//
var rowsQuantity:Number=3;
var columnsQuantity:Number=Math.ceil(mySetsList.length()/rowsQuantity);
var cellWidth:Number=160;


// CREATE ARRAY TO STORE i //
var storeNodeArray:Array = new Array();


// CREATE BUTTONS //
for (var i:Number=0; i< mySetsList.length(); i++) {

var newSetButtonMC:setButtonMC = new setButtonMC();
newSetButtonMC.name="newSetButtonMC"+i;

newSetButtonMC.setButtonText.text=mySetsList.attribute("setTitle")[i];
newSetButtonMC.setButtonText.autoSize=TextFieldAutoSize.LEFT;

var cellX:Number=Math.floor(i/rowsQuantity);
var cellY:Number=i%rowsQuantity;

newSetButtonMC.x=cellX*cellWidth;
newSetButtonMC.y=cellY*(newSetButtonMC.height+10);

//

storeNodeArray[i]=i;

newSetButtonMC.addEventListener(MouseEvent.CLICK, onClick);

function onClick(mevt:MouseEvent):void {
// neste momento que eu não sei o que fazer
// como faço para carregar uma geleria específica e relativa ao botão?
}

//

menuContainerMC.addChild(newSetButtonMC);
}
}



***

Sintetizando tudo: como dar a cada botão uma identidade própria e única, cada um responsável por seu set de imagens?


Obrigado à todos . Abstrato
0

#2 User is offline   abstrato 

  • Group: Membros
  • Posts: 50
  • Joined: 18-January 07

Posted 16 June 2009 - 02:32 PM

Tenho impressão de que estou quase lá, mas ainda não sei como chegar a solução. Alguém saberia?

CODE
//// CREATE CONTAINERS ////

// CREATE MENU CONTAINER //

var menuContainer:Sprite = new Sprite();

menuContainer.x=10;
menuContainer.y=300;

addChild(menuContainer);


// CREATE IMAGES CONTAINER //

var imagesContainer:Sprite = new Sprite();

imagesContainer.x=10;
imagesContainer.y=10;

addChild(imagesContainer);

//// LOAD XML ////

var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, whenLoaded);

xmlLoader.load(new URLRequest("XML/roiaXML.xml"));

var xml:XML;

function whenLoaded(evt:Event):void {
xml=new XML(evt.target.data);
var mySetsList:XMLList=xml.children();

//// MENU BUTTONS ////

// CREATE ARRAYS //
var totalArray:Array = new Array();
var setNodesArray:Array = new Array();
var setNamesArray:Array = new Array();


// POSITIONING BUTTONS INSIDE MENU CONTAINER//
var rowsQuantity:Number=3;
var columnsQuantity:Number=Math.ceil(mySetsList.length()/rowsQuantity);
var cellWidth:Number=160;


// CREATE BUTTONS //
for (var i:int=0; i< mySetsList.length(); i++) {

var newSetButtonMC:setButtonMC=new setButtonMC("ok"+i);

setNodesArray.push(i);
//setNamesArray.push(mySetsList.attribute("setTitle")[i]);

//trace(setNodesArray);
//trace(setNamesArray);

var imageNodesArray:Array = new Array();

for (var j:int=0; j<mySetsList[i].IMAGE.length(); j++) {
imageNodesArray.push(mySetsList[i].IMAGE[j].attribute("imageTitle"));
}

totalArray.push(imageNodesArray);

//

trace(newSetButtonMC.name);
newSetButtonMC.setButtonText.text=mySetsList.attribute("setTitle")[i];
newSetButtonMC.setButtonText.autoSize=TextFieldAutoSize.LEFT;

var cellX:Number=Math.floor(i/rowsQuantity);
var cellY:Number=i%rowsQuantity;

newSetButtonMC.x=cellX*cellWidth;
newSetButtonMC.y=cellY*(newSetButtonMC.height+10);

newSetButtonMC.addEventListener(MouseEvent.CLICK, onClick);

menuContainer.addChild(newSetButtonMC);
}

totalArray.push(setNodesArray);


//// MENU BUTTON ACTIONS ////

function onClick(mevt:MouseEvent):void {
trace(totalArray [0][0]);
}
}

0

#3 User is offline   abstrato 

  • Group: Membros
  • Posts: 50
  • Joined: 18-January 07

Posted 18 June 2009 - 07:52 PM

Achei uma possível solução e resolvi postar, caso alguém tenha se deparado com a mesma dúvida. Alterações em negrito e fonte maior:

CODE
//// CREATE CONTAINERS ////

// CREATE MENU CONTAINER //

var menuContainer:MovieClip = new MovieClip();

menuContainer.x=10;
menuContainer.y=300;

addChild(menuContainer);


// CREATE IMAGES CONTAINER //

var imagesContainer:MovieClip = new MovieClip();

imagesContainer.x=10;
imagesContainer.y=10;

addChild(imagesContainer);

//// LOAD XML ////

var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, whenLoaded);

xmlLoader.load(new URLRequest("XML/roiaXML.xml"));

var xml:XML;

function whenLoaded(evt:Event):void {
xml=new XML(evt.target.data);
var mySetsList:XMLList=xml.children();

//// MENU BUTTONS ////

// CREATE ARRAYS //
//var totalArray:Array = new Array();
//var setNodesArray:Array = new Array();
//var setNamesArray:Array = new Array();


// POSITIONING BUTTONS INSIDE MENU CONTAINER//
var rowsQuantity:Number=3;
var columnsQuantity:Number=Math.ceil(mySetsList.length()/rowsQuantity);
var cellWidth:Number=160;


// CREATE BUTTONS //
for (var i:int=0; i< mySetsList.length(); i++) {

var newSetButtonMC:setButtonMC=new setButtonMC();

//setNodesArray.push(i);
//setNamesArray.push(mySetsList.attribute("setTitle")[i]);

//trace(setNodesArray);
//trace(setNamesArray);

var imageNodesArray:Array = new Array();

for (var j:int=0; j<mySetsList[i].IMAGE.length(); j++) {
imageNodesArray.push(mySetsList[i].IMAGE[j].attribute("imageTitle"));
}
newSetButtonMC.imageArray=imageNodesArray;

//
newSetButtonMC.setButtonText.text=mySetsList.attribute("setTitle")[i];
newSetButtonMC.setButtonText.autoSize=TextFieldAutoSize.LEFT;

var cellX:Number=Math.floor(i/rowsQuantity);
var cellY:Number=i%rowsQuantity;

newSetButtonMC.x=cellX*cellWidth;
newSetButtonMC.y=cellY*(newSetButtonMC.height+10);

newSetButtonMC.addEventListener(MouseEvent.CLICK, onClick);

menuContainer.addChild(newSetButtonMC);
}


//// MENU BUTTONS ACTIONS ////

function onClick(mevt:MouseEvent):void {
var mc:setButtonMC=setButtonMC(mevt.currentTarget);
for (i=0; i<mc.imageArray.length; i++) {
trace(mc.imageArray[i]);
}

}
}


Abraço para todos.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




2 User(s) are reading this topic
0 membro(s), 2 visitante(s) e 0 membros anônimo(s)