Avatar billede sorteplov Nybegynder
25. april 2003 - 00:44 Der er 9 kommentarer og
1 løsning

Dynamisk genereret Flash menu - problem med onRollOut.....

Hej jeg har en dynamisk genereret dropdown menu i Flash (bruger XML). Den virker næsten OK, men jeg har et problem med at få undermenuerne til at blive ved med at være der når man rykker ned over dem fra topmenuen - og så at få undermenuerne til at forsvinde når man fjerner musen fra dem. Kryptisk?

Kort fortalt behøver jeg en måde at tjekke om musen er over nogle bestemte MC's og så undlade at fjerne dem med removeMovieClip(); - men så til gengæld fjerne alle andre MC's i arrayet......
Avatar billede nima Nybegynder
25. april 2003 - 01:00 #1
har du lagt det ud på nettet et sted? Kunne være lidt nemmere at have med at gøre hvis man havde noget at forholde sig til!
Avatar billede sorteplov Nybegynder
25. april 2003 - 01:03 #2
øjeblik....:-)
Avatar billede sorteplov Nybegynder
25. april 2003 - 01:10 #3
Avatar billede snigeren Nybegynder
25. april 2003 - 10:07 #4
ehem en lille kommentar,.. hvis nogen skal have en chance for at se på filerne er det meget rart med *.fla filen eftersom man ikke umiddelbart kan åbne en *.swf fil
=)

/Snig
Avatar billede baitianlong Nybegynder
25. april 2003 - 15:37 #5
Du kan fikse det med:

if(_root._xmouse < et eller andet && _root._ymouse < et eller andet && _root._xmouse > et eller andet && _root._ymouse > et eller andet) {
  _visible = 1;
} else {
  _visible = 0;
}
Avatar billede sorteplov Nybegynder
25. april 2003 - 15:51 #6
legende

Det kan jeg ikke - desværre :-)

Har du set koden....?

Her er den:

menuXml = new XML();
menuXml.ignoreWhite = true;
menuXml.load("php_menu_xml.php");
menuXml.onLoad = function(success) {
if (success) {
      topmenu = menuXml.firstChild.childNodes; // Definerer topmenu
    menuArray = new Array(topmenu.length);
      for (i=0; i<topmenu.length; i++) {
        menuArray[i] = _root.attachMovie("xml_menu", "xml_menu" +i, i);
        menuArray[i]._x = 5+(75*i); // X position -> første x-værdi + efterfølgende distribution dvs. = x+(x*i)
        menuArray[i]._y = 25;
        menuArray[i].itemLabel.text = topmenu[i].attributes.menutext; // Indsætter menutext i topmenu
        menuArray[i].content = topmenu[i].attributes.contentid; // Sætter variablen contentid for topmenu
        menuArray[i].template = topmenu[i].attributes.template; // Sætter variablen template for topmenu
        menuArray[i].index = i; // Sætter hvilken knap der er valgt
        menuArray[i].subNodes = topmenu[i].childNodes;
        // Musefunktioner
        menuArray[i].onRollOver = function() {
              dropDown(this.index);
              setProperty(this, _alpha, 100);
              //setProperty(menuArray[i]["xml_menu_sub1"], _alpha, 50);
              this.gotoAndStop("over");
        }
        menuArray[i].onRollOut = function() {
              fjernDropDown(this.index, this);
              setProperty(this, _alpha, 50);
              this.gotoAndStop("ini");
          }
        menuArray[i].onRelease = function() {
              menuLink(this.index);
              fjernDropDown(this.index);
              setProperty(this, _alpha, 10);
              loadMovie(template+".swf", "mcIndhold");
        }
      } 
  }
}

// XML MENUFUNKTIONER //
     
      function dropDown(id) {
        submenu = menuArray[id].subNodes; // Definerer submenu
        for (i=0; i<submenu.length; i++) {
            menuArray[id].attachMovie("xml_menu_sub", "xml_menu_sub" +i, i+1);
            menuArray[id]["xml_menu_sub" +i]._x = 0;
            menuArray[id]["xml_menu_sub" +i]._y = menuArray[id]._y+(2+(20*i)); // Y position -> første y-værdi + efterfølgende distribution dvs. = y+(y*i)
            menuArray[id]["xml_menu_sub" +i].SubItemLabel.text = submenu[i].attributes.menutext; // Indsætter menutext ind i submenu
          }
        }

      function fjernDropDown(index,opener) {
          for(i=0; i<menuArray[index].subNodes.length; i++) {
              if(menuArray[index]["xml_menu_sub" +i]._parent == opener){
              menuArray[index]["xml_menu_sub" +i].removeMovieClip();
          }
        }
      }
         
      function menuLink(index) {
        contentid = menuArray[index].content;
        template = menuArray[index].template;
        trace("Content = "+ contentid + " Template = " + template);
      }
Avatar billede mat Nybegynder
25. april 2003 - 17:04 #7
I din zip ligger der en html, en swf og et php-dokument?
Avatar billede mat Nybegynder
25. april 2003 - 17:14 #8
prøv med det her:



menuXml = new XML();
menuXml.ignoreWhite = true;
menuXml.load("menu.xml");
menuXml.onLoad = function(success) {
if (success) {
      topmenu = menuXml.firstChild.childNodes; // Definerer topmenu
    menuArray = new Array(topmenu.length);
      for (i=0; i<topmenu.length; i++) {
        menuArray[i] = _root.attachMovie("xml_menu", "xml_menu" +i, i);
        menuArray[i]._x = 5+(75*i); // X position -> første x-værdi + efterfølgende distribution dvs. = x+(x*i)
        menuArray[i]._y = 25;
        menuArray[i].itemLabel.text = topmenu[i].attributes.menutext; // Indsætter menutext i topmenu
        menuArray[i].content = topmenu[i].attributes.contentid; // Sætter variablen contentid for topmenu
        menuArray[i].template = topmenu[i].attributes.template; // Sætter variablen template for topmenu
        menuArray[i].index = i; // Sætter hvilken knap der er valgt
        menuArray[i].subNodes = topmenu[i].childNodes;
        // Musefunktioner
        /*menuArray[i].onRollOver = function() {
              dropDown(this.index);
              setProperty(this, _alpha, 100);
              //setProperty(menuArray[i]["xml_menu_sub1"], _alpha, 50);
              this.gotoAndStop("over");
        }*/
      /* menuArray[i].onRollOut = function() {
              fjernDropDown(this.index, this);
              setProperty(this, _alpha, 50);
              this.gotoAndStop("ini");
          }*/
          menuArray[i].onEnterFrame = function() {
              if (this.hitTest(_root._xmouse, _root._ymouse, false)) {
                  dropDown(this.index);
              }
              else {
                  fjernDropDown(this.index, this);
              }
          }
        menuArray[i].onRelease = function() {
              menuLink(this.index);
              fjernDropDown(this.index);
              setProperty(this, _alpha, 10);
              loadMovie(template+".swf", "mcIndhold");
        }
      } 
  }
}

// XML MENUFUNKTIONER //
     
      function dropDown(id) {
        submenu = menuArray[id].subNodes; // Definerer submenu
        for (i=0; i<submenu.length; i++) {
            menuArray[id].attachMovie("xml_menu_sub", "xml_menu_sub" +i, i+1);
            menuArray[id]["xml_menu_sub" +i]._x = 0;
            menuArray[id]["xml_menu_sub" +i]._y = menuArray[id]._y+(2+(20*i)); // Y position -> første y-værdi + efterfølgende distribution dvs. = y+(y*i)
            menuArray[id]["xml_menu_sub" +i].SubItemLabel.text = submenu[i].attributes.menutext; // Indsætter menutext ind i submenu
          }
        }

      function fjernDropDown(index,opener) {
          for(i=0; i<menuArray[index].subNodes.length; i++) {
              if(menuArray[index]["xml_menu_sub" +i]._parent == opener){
              menuArray[index]["xml_menu_sub" +i].removeMovieClip();
          }
        }
      }
         
      function menuLink(index) {
        contentid = menuArray[index].content;
        template = menuArray[index].template;
        trace("Content = "+ contentid + " Template = " + template);
      }
Avatar billede sorteplov Nybegynder
25. april 2003 - 19:49 #9
mat -> Ok det virker - men problemet er at få submenuerne til at være "separate" enheder - man kan formatere fx. med setProperty eller giver selvstændige actions......?

:-)
Avatar billede sorteplov Nybegynder
20. august 2003 - 23:24 #10
Jeg lukker spm.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester