Volledige versie bekijken : Via xml menu naar frame?
Down
%Europe/Berlin %470 %2007, 11:17
Vraagje.. hopelijk heeft iemand dit probleem eerder gehad.
Ik ben een site aan het maken met een xml menu (wordt dus opgebouwd uit xml)
Hieronder een stukje van die xml:
<menu name="retail">
<item name="knop1" action="gotoURL" variables="http://www.blabla.nl/"/>
<item name="knop2" action="gotoURL" variables="http://www.blabla.nl/"/>
<menu name="knop3">
<item name="menu31" action="loadMovieNum" variables="test.swf, 0"/>
<item name="menu32" action="gotoURL" variables="http://www.blabla.nl/"/>
</menu>
Zoals je ziet geef ik bij 'submenu 31' een action mee nl: "loadMovieNum" ipv gotoURL en bij de variabele de naam van de swf en hierachter het level waarop deze ingeladen moet worden.. helaas blijkt dit niet te werken.. iemand ideeën?
les
%Europe/Berlin %564 %2007, 13:32
Hoe ziet je menu script er uit dan ? ( de xml die je hier gepost hebt klopt trouwens niet, er word een menu tag niet afgesloten).
ik denk dat je een kleine aanpassing moet maken bij de verwerking van de xml ..
bv:
switch(item[i].attributes.action) {
case "loadMovieNum": loadMovieNum(...); break;
case "gotoURL": // etc
}
Down
%Europe/Berlin %686 %2007, 16:28
Hoe ziet je menu script er uit dan ? ( de xml die je hier gepost hebt klopt trouwens niet, er word een menu tag niet afgesloten).
ik denk dat je een kleine aanpassing moet maken bij de verwerking van de xml ..
bv:
switch(item[i].attributes.action) {
case "loadMovieNum": loadMovieNum(...); break;
case "gotoURL": // etc
}
Klopt.. De xml die hierboven staat is maar een klein stukje van mijn xml.. rest doet er niet toe..
Ik begrijp helemaal niets van je tip.. maar goed.. zal maandag even kijken of ik daar uit kom..
hier mijn as:
// generates a list of menu items (effectively one menu)
// given the inputted parameters. This makes the main menu
// as well as any of the submenus
GenerateMenu = function(container, name, x, y, depth, node_xml) {
// variable declarations
var curr_node;
var curr_item;
var curr_menu = container.createEmptyMovieClip(name, depth);
// for all items or XML nodes (items and menus)
// within this node_xml passed for this menu
for (var i=0; i<node_xml.childNodes.length; i++) {
// movieclip for each menu item
curr_item = curr_menu.attachMovie("menuitem","item"+i+"_mc", i);
curr_item._x = x;
curr_item._y = y + i*curr_item._height;
curr_item.trackAsMenu = true;
// item properties assigned from XML
curr_node = node_xml.childNodes[i];
curr_item.action = curr_node.attributes.action;
curr_item.variables = curr_node.attributes.variables;
curr_item.name.text = curr_node.attributes.name;
// item submenu behavior for rollover event
if (node_xml.childNodes[i].nodeName == "menu"){
// open a submenu
curr_item.node_xml = curr_node;
curr_item.onRollOver = curr_item.onDragOver = function(){
var x = this._x + this._width - 0;
var y = this._y + 0;
GenerateMenu(curr_menu, "submenu_mc", x, y, 1000, this.node_xml);
// show a hover color
var col = new Color(this.background);
col.setRGB(0x666666);
};
}else{ // nodeName == "item"
curr_item.arrow._visible = false;
// close existing submenu
curr_item.onRollOver = curr_item.onDragOver = function(){
curr_menu.submenu_mc.removeMovieClip();
// show a hover color
var col = new Color(this.background);
col.setRGB(0x666666);
};
}
curr_item.onRollOut = curr_item.onDragOut = function(){
// restore color
var col = new Color(this.background);
col.setTransform({ra:100,rb:0,ga:100,gb:0,ba:100,b b:0});
};
// any item, menu opening or not can have actions
curr_item.onRelease = function(){
Actions[this.action](this.variables);
CloseSubmenus();
};
} // end for loop
};
// create the main menu, this will be constantly visible
CreateMainMenu = function(x, y, depth, menu_xml){
// generate a menu list
GenerateMenu(this, "mainmenu_mc", x, y, depth, menu_xml.firstChild);
// close only submenus if visible durring a mouseup
// this main menu (mainmenu_mc) will remain
mainmenu_mc.onMouseUp = function(){
if (mainmenu_mc.submenu_mc && !mainmenu_mc.hitTest(_root._xmouse, _root._ymouse, true)){
CloseSubmenus();
}
};
};
// closes all submenus by removing the submenu_mc
// in the main menu (if it exists)
CloseSubmenus = function(){
mainmenu_mc.submenu_mc.removeMovieClip();
};
// This actions object handles methods for actions
// defined by the XML called when a menu item is pressed
Actions = Object();
Actions.gotoURL = function(urlVar){
getURL(urlVar, "_blank");
};
Actions.message = function(msg){
message_txt.text = msg;
};
Actions.newMenu = function(menuxml){
menu_xml.load(menuxml);
};
// load XML, when done, run CreateMainMenu to interpret it
menu_xml = new XML();
menu_xml.ignoreWhite = true;
menu_xml.onLoad = function(ok){
// create main menu after successful loading of XML
if (ok){
CreateMainMenu(0, 100, 0, this);
message_txt.text = "No errors found :)";
}else{
message_txt.text = "error: XML not successfully loaded";
}
};
// load first XML menu
menu_xml.load("http://www.mijn.xml");
ow en deze heb ik niet zelf geschreven maar komt hier (http://www.kirupa.com/developer/actionscript/xml_dropdown_menu.htm) vandaan.
Clemra
%Europe/Berlin %720 %2007, 17:16
Actions[this.action](this.variables);
het gedeelte this.action geeft dus aan welke functie hij moet aanroepen.
op het dat er dus "gotoUrl" staat in je XML gaat hij naar
Actions.gotoURL = function(urlVar){
getURL(urlVar, "_blank");
};
Maar de functie "loadMovieNum" bestaat nog niet, dus je moet er eentje bij maken. Die zal er zo ongeveer uit moeten zien:
Actions.loadMovieNum= function(movieVar){
loadMovie(movieVar, getNextHighestDepth());
};
Neem aan dat je dat dus bedoelt
Down
%Europe/Berlin %409 %2007, 09:48
Hmm klinkt inderdaad logisch.. was er al achter dat ik dat moest aanmaken maar hoe was me nog niet duidelijk.. bedankt! Maar helaas.. heb m geprobeerd en werkt nog niet helemaal.. wat doe ik / doen we fout?
Misschien is de xml nog niet goed?
<item name="menu31" action="loadMovieNum" variables="test.swf, 0"/>
p.s. ik neem aan dat ik niet met een lege mc / container moet werken? Liever niet iig ;)
Down
%Europe/Berlin %474 %2007, 11:23
Mocht bovenstaande allemaal echt niet werken :( :
Ik heb het nu werkend mét container.. zie onderstaand as.
Echter.. de swf wordt er nu bovenop geladen en eigenlijk moet ie vervangen worden.. lastig lastig lastig..
Actions.loadExternal = function(externalswf) {
container.loadMovie(externalswf);
}
Down
%Europe/Berlin %484 %2007, 11:37
OK sorry.. vergeet al het bovenstaande maar :) Ik wil eigenlijk dat ik vanuit de xml naar een frame kan springen.. is veel makkelijker en dan kan ik van daaruit wel een swf inladen.. dus dit is de xml (zoiets moet het worden iig):
<item name="menu31" action="loadFrame" variables="15" />
Hoe maak ik dit zo dat er ipv een swf laad naar een frame spring?
Down
%Europe/Berlin %406 %2007, 09:45
Niemand? Ben dr bijjjjjjjjjjjjjjna!!! :P
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.