Comunidad de diseño web y desarrollo en internet online

llamar aplicaciones de menu accordeon

Citar            
MensajeEscrito el 03 Ene 2010 04:46 pm
tengo este codigo de un menu accordeon, este llama las imagenes desde un archivo xml pero quiciera saber en que parte y que codigo coloco para que llame alguna aplicacion que quiera enlazar, en total son seis enlaces

Código ActionScript :

//import tweenlite classes
import gs.TweenLite;
import gs.easing.*;


var MENU_ARRAY:Array; //used to save the items data
var OPENED_MENU:int; //to inform the menu that should be open at startup
var MOVE_ON_MOUSE_OVER:Boolean=false; //tha name says everything
var xmlLoader:URLLoader; //the xml loader

loadXML("menu2.xml"); //load the xml

function loadXML(Uri:String):void {
   xmlLoader = new URLLoader();
   xmlLoader.addEventListener(Event.COMPLETE, onComplete);
   xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, onError);
   xmlLoader.load(new URLRequest(Uri));
}
function onError(evt:ErrorEvent):void {
trace("cannot load xml file");
}

function onComplete(evt:Event):void {
//read and load xml into array, by parsing it using prepareMenu
MENU_ARRAY=prepareMenu(xmlLoader.data.toString());
placeItemsOnStage(); //place all required items on stage.
}

function placeItemsOnStage():void {

var pos:Number=0;
//define the container properties
menuContainer.x=0;
menuContainer.y=0;

for(var c:int=0; c<MENU_ARRAY.length; c++) {
      var it:menuItem = new menuItem; //load out menuItem, because its exported to AS, we can use it here
      it.x=0; //its the gray border width
      it.y=c*0; //place on top
      it.id="Item-"+c; //id the menuItem
      it.name="Item-"+c; //name de menuItem
      it.posY=pos; //actual pos, useful to open and know is position
      it.itemLabel.text=String(MENU_ARRAY[c].Ititle).toUpperCase(); //load the label in uppercase
      it.addEventListener(MouseEvent.CLICK, onMouseClick); //add mouse click listener
      if(MOVE_ON_MOUSE_OVER==true) it.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); //if configured, load the mouse over event
      it.useHandCursor=true;  //use hand cursor
      it.buttonMode=true; //buttonMode
      it.itemText.visible=false; //hide the textField
      menuContainer.addChild(it); //add the menu item as child

      if(String(MENU_ARRAY[c].IcontentType)=="image/swf")   { //check the content and load things accordint to it
         var ldr:Loader = new Loader();
         ldr.x=0;
         ldr.y=25;
         it.addChild(ldr);
         ldr.load(new URLRequest(MENU_ARRAY[c].IcontentData.toString()));      
      }
      else if(String(MENU_ARRAY[c].IcontentType)=="text") {
         it.itemText.visible=true;
         it.itemText.text=MENU_ARRAY[c].IcontentData.toString();
      }
      
      pos+=24; //the next menuItem x position
   }

   //put mask in place
   masker.width=(MENU_ARRAY.length*27+325)
   masker.height=menuContainer.height;
   masker.x=0;
   masker.y=0;

   moveItem(OPENED_MENU-1); //open menu confirured in XML
   
}
function onMouseOver(evt:MouseEvent):void {
if(evt.target.name.toString()=="buttonBack") prepareMove(evt)
}

function prepareMove(evt:MouseEvent):void {
   var targetName:String = evt.currentTarget.name.toString(); //get the menuItem 
   var temp:Array = targetName.split("-"); //split his name: Item-x
   var itemNumber:int=(temp[1]); //got item number
   moveItem(itemNumber); //move it
}

function onMouseClick(evt:MouseEvent):void {
   if(evt.target.name.toString()=="buttonBack")  prepareMove(evt); //mouse action was done in buttonBack
   else trace("Item "+evt.currentTarget.name+" clicked!"); //mouse action was made on accordion area
}


function moveItem(num:int):void {
   var itemToMove:menuItem=menuContainer.getChildByName("Item-"+String(num)) as menuItem;
   //get the menuItem child
      for(var m=0;m<MENU_ARRAY.length;m++) //move one-by-one to the new position
      {
         var tempMc = menuContainer.getChildByName("Item-"+m);
         if(tempMc.y > itemToMove.y) TweenLite.to(tempMc, 1, {y:((tempMc.posY) + itemToMove.width-27), ease:Quart.easeOut}); //see tweenLite for info about this.
         else if(tempMc.y <= itemToMove.y) TweenLite.to(tempMc, 1, {y:(tempMc.posY), ease:Quart.easeOut});         
      }
}

function prepareMenu (XMLData:String):Array
      {
         //make sure it cames in XML
         var menuXML:XML = new XML(XMLData);
         //just in case
         menuXML.ignoreWhitespace = true;
      
         //get XML item's entrys
         var XMLItems = menuXML.descendants("item");

         //load all items into an array
         var itemsArray:Array = new Array();
         var itemObj:Object;
         for(var i in XMLItems)
         {
            itemObj=new Object();
            itemObj.Ititle=XMLItems[i].@Ititle;
            itemObj.IcontentType=XMLItems[i].@IcontentType;
            itemObj.IcontentData=XMLItems[i].@IcontentData;
            itemObj.itemID="menu"+i;
            itemsArray.push(itemObj);
         }
      OPENED_MENU=menuXML.@menuOpen; //get menu for open.
        MOVE_ON_MOUSE_OVER=([email protected]()=="true" ? true : false); //get the option for load or not mouseOver open
      return itemsArray;
}
//finish.
stop();


este codigo me ha parecido excelente

Por guillow

31 de clabLevel



Genero:Masculino  

msie8
Citar            
MensajeEscrito el 04 Ene 2010 12:34 pm
¿La pregunta sería como cargar aplicaciones Flash en un accordion? ¿Que tipo de aplicaciones?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Ene 2010 03:14 pm
estube mirando y parece que hay que cambiar el codigo donde dice
function onMouseClick, las aplicaciones son aplicaciones con javascrip y html

Por guillow

31 de clabLevel



Genero:Masculino  

msie8
Citar            
MensajeEscrito el 04 Ene 2010 03:16 pm
Flash no carga aplicaciones con JS y HTML, busca algo similar pero hecho en JasvaScript, posiblemente algún gadget de Ajax

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Ene 2010 04:30 pm
muchachos esta es la pagina donde está la aplicacion

http://translate.google.com/translate?hl=es&sl=en&tl=es&u=http%3A%2F%2Fwww.thetechlabs.com%2Ftutorials%2Fxml%2Fbuild-a-dynamic-accordion-menu-in-flash-cs4-with-actionscript-30-and-xml%2F&anno=2

que codigo aplico para cuando se le de clic a cada enlace me lleve a una pagina web o una aplicacion de javascrip

Por guillow

31 de clabLevel



Genero:Masculino  

msie8
Citar            
MensajeEscrito el 04 Ene 2010 04:39 pm
Mmm ... suena a que lo copypasteaste porque te pareció chulo pero NPI de como funciona ... anyway, ahí va la idea
El menuy carga un XML y lo parsea en el método prepareMenu donde mete en itemsArray los datos. Suponiendo que agregaras una propiedad IcontentLink que metieras en el array, la puedes capturar en el onMouseClick. Primero lo asignas:

it.itemLabel.text=String(MENU_ARRAY[c].Ititle).toUpperCase();
it.Link=String(MENU_ARRAY[c].IcontentLink )

Luego lo capturas

Código ActionScript :

function onMouseClick(evt:MouseEvent):void { 
   if(evt.target.name.toString()=="buttonBack")  prepareMove(evt); //mouse action was done in buttonBack 
   else trace("Item "+evt.currentTarget.IcontentLink+" clicked!"); 
}


Cuando veas que lo traza bien, cambia el trace por un navigateToURL

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Ene 2010 04:52 pm
jee si lo copie todo porque no sabia como se hacia y necesitaba hacer uno similar, pero lo necesitaba vertical apesar de eso pues he cacharriado un poco con eso para que haga lo que necesito..y pues ahi se van aprendiendo cositas. gracias por tu ayuda voy a aplicarlo.

Por guillow

31 de clabLevel



Genero:Masculino  

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.