Volledige versie bekijken : create dynamic buttons met XML
boost
%Europe/Berlin %441 %2006, 10:35
Hallo,
Ik heb hiervoor een post gedaan (http://www.flashfocus.nl/forum/showthread.php?t=24599) met de vraag hoe ik xml buttons kan maken. Daarbij de nodige code geplaatst. Op zich werkt dat nu prima. Echter worden het geen "knoppen" en dat is nog mijn enige probleem...
Nu heb ik ook al gekeken naar de a.s. attachMovie en opzich krijg ik het wel voor elkaar om de knoppen te tonen. Echter krijg ik er geen "style" aanvast. Kan iemand mij helpen?
Ik wil dus een menu maken dmv. een xml bestand dat per item de volgende attributen heeft
titel="home"
link="home.php"
xpos="0"
ypos="0"
mwidth="100"
deze waarden zitten in de xml om zo min mogelijk te doen in flash zelf.
Bvd, Bert
Dauntless
%Europe/Berlin %524 %2006, 12:35
Zet je nieuwe code (of liever een fla + xml) ook even online :).
boost
%Europe/Berlin %669 %2006, 16:04
Zet je nieuwe code (of liever een fla + xml) ook even online :).
Hier mijn a.s.
menuXML = new XML();
menuXML.ignoreWhite = true;
menuXML.onLoad = function()
{
var items,itemnaam,titel,link,kleur,kleurover,xpos,ypo s,mwidth;
items = this.firstChild;
if( items.hasChildNodes() )
{
for(var i=0; i<6; i++)
{
titel = items.childNodes[i].attributes.titel;
link = items.childNodes[i].attributes.link;
kleur = items.childNodes[i].attributes.kleur;
kleurover = items.childNodes[i].attributes.kleurover;
xpos = items.childNodes[i].attributes.xpos;
ypos = items.childNodes[i].attributes.ypos;
mwidth = items.childNodes[i].attributes.mwidth;
itemnaam = 'm_item_'+i;
_root.createTextField(itemnaam,i,xpos,ypos,mwidth, '25');
_root[itemnaam].embedFonts = true;
_root[itemnaam].multiline = false;
_root[itemnaam].wordWrap = false;
_root[itemnaam].border = false;
_root[itemnaam].selectable = false;
myformat = new TextFormat();
myformat.font = "mfont";
myformat.color = '0x' + kleur;
myformat.bullet = false;
myformat.underline = false;
myformat.url = link;
_root[itemnaam].text = titel;
_root[itemnaam].setTextFormat(myformat);
}
}
}
if(_root['xmlfile'] == undefined) {
var xmlbestand = "../templates/standaard/menu1.xml";
} else {
var xmlbestand = _root['xmlfile'];
}
menuXML.load(xmlbestand);
Heb hierbij in het html document een addVariable() waar het pad naar het xml bestand in staat. Zo kan ik het flash bestand universeel en vaker gebruiken (heb namelijk 2 menu's)
Verder is de .fla leeg (geen mc. e.d.) behalve een "new font" genaamd "mfont".
Het XML bestand:
<?xml version="1.0" encoding="iso-8859-1"?>
<menu>
<items titel="HOME" link="page/home.php" kleur="593a1d" kleurover="997a4e" xpos="0" ypos="0" mwidth="50" />
<items titel="BIOGRAFIE" link="page/home.php" kleur="593a1d" kleurover="997a4e" xpos="70" ypos="0" mwidth="100" />
<items titel="DISCOGRAFIE" link="page/home.php" kleur="593a1d" kleurover="997a4e" xpos="170" ypos="0" mwidth="100" />
<items titel="AGENDA" link="page/home.php" kleur="593a1d" kleurover="997a4e" xpos="290" ypos="0" mwidth="100" />
<items titel="FANZONE" link="page/home.php" kleur="593a1d" kleurover="997a4e" xpos="375" ypos="0" mwidth="100" />
<items titel="CONTACT" link="page/home.php" kleur="593a1d" kleurover="997a4e" xpos="465" ypos="0" mwidth="100" />
</menu>
Nu moeten de links nog op de teksten en ik wil een mouseover kleur kunnen instellen (die in de xml staat in "kleurover"). Heb veel gelezen over *.url methode maar die functioneert bij mij niet.
Nou hopelijk kunnen jullie er wat mee!
Bvd, Bert
Dauntless
%Europe/Berlin %786 %2006, 18:53
menuXML = new XML();
menuXML.ignoreWhite = true;
menuXML.onLoad = function() {
var items, itemnaam, titel, link, kleur, kleurover, xpos, ypos, mwidth;
items = this.firstChild;
if (items.hasChildNodes()) {
for (var i = 0; i<6; i++) {
titel = items.childNodes[i].attributes.titel;
link = items.childNodes[i].attributes.link;
kleur = Number(items.childNodes[i].attributes.kleur);
kleurover = Number(items.childNodes[i].attributes.kleurover);
xpos = items.childNodes[i].attributes.xpos;
ypos = items.childNodes[i].attributes.ypos;
mwidth = items.childNodes[i].attributes.mwidth;
itemnaam = 'm_item_'+i;
var mc = _root.createEmptyMovieClip(itemnaam, i);
mc.link = link;
mc.hover = kleurover;
mc.nonHover = kleur;
mc.onRelease = onReleaseHandler;
mc.onReleaseOutside = mc.onRollOut = onRollOutHandler;
mc.onRollOver = onRollOverHandler;
mc._x = xpos;
mc._y = ypos;
mc.createTextField("theText", 1, 0, 0, mwidth, 25);
mc.theText.multiline = false;
mc.theText.wordWrap = false;
mc.theText.border = false;
mc.theText.selectable = false;
myformat = new TextFormat();
myformat.bullet = false;
myformat.underline = false;
myformat.url = link;
mc.theText.text = titel;
mc.theText.setTextFormat(myformat);
mc.theText.onRollOut();
}
}
};
/*if(_root['xmlfile'] == undefined) {
var xmlbestand = "../templates/standaard/menu1.xml";
} else {
var xmlbestand = _root['xmlfile'];
}*/
xmlbestand = "laden.xml";
menuXML.load(xmlbestand);
function onReleaseHandler()
{
getURL(this.link);
}
function onRollOutHandler()
{
this.theText.textColor = this.nonHover;
}
function onRollOverHandler()
{
this.theText.textColor = this.hover;
}
Zo :).
Wel even terug je embedFont en zo toevoegen. In je xml moet er voor elke kleur ook nog '0x' staan.
boost
%Europe/Berlin %816 %2006, 19:36
Geweldig!
Echter moest ik in de "myformat" nog wel de color toevoegen, anders had ie bij bekijken zonder er met de muis erover heen te gaan een zwarte kleur :) helemaal top dit! Enorm bedankt voor de genomen moeite!
Grtz. Bert
[edit]
in Firefox werkt het niet goed :S ligt dit aan de flash player of is dit iets van FF? De mouseover werkt niet goed, in IE is ie perfect!
HelloBye
%Europe/Berlin %849 %2006, 20:23
Hoi,
ik vraag me af of het eenvoudig is om een movieclip aan de teksten (theText) te 'attachen'? Die dmv. een rollover bijvoorbeeld de waarde kleur in een textfield laat verschijnen. Ik heb geprobeerd om dmv attachMovie eenzelfde movieclip aan elke menuoptie te plakken, maar gek genoeg lukt dit maar niet.
Echt heel erg bedankt alvast als iemand hier een antwoord op kan geven, ik stoei hier al lang mee namelijk..
Patrick.
HelloBye
%Europe/Berlin %570 %2006, 13:40
Hoi,
ik vraag me af of het eenvoudig is om een movieclip aan de teksten (theText) te 'attachen'? Die dmv. een rollover bijvoorbeeld de waarde kleur in een textfield laat verschijnen. Ik heb geprobeerd om dmv attachMovie eenzelfde movieclip aan elke menuoptie te plakken, maar gek genoeg lukt dit maar niet.
Echt heel erg bedankt alvast als iemand hier een antwoord op kan geven, ik stoei hier al lang mee namelijk..
Patrick.
Niemand?
Dauntless
%Europe/Berlin %578 %2006, 13:53
Laat eens zien wat je geprobeerd had :).
boost
%Europe/Berlin %595 %2006, 14:17
Was ik nog even...
Ik heb inmiddels van alles gelezen over hit area dat dat niet altijd goed is in Firefox. Nu ben ik aan het stoeien geweest met een "hit area" maar ik krijg dat neit voor elkaar, zou iemand me kunnen helpen?
Bvd, Bert
HelloBye
%Europe/Berlin %385 %2006, 09:14
Laat eens zien wat je geprobeerd had :).
Met mijn schrale kennis van Actionscript dacht ik het eenvoudig te kunnen oplossen door in de for-loop een attachMovie te plaatsen (eg. "_root.attachMovie("knop");"), maar dat werkt dus niet...
:#
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.