Volledige versie bekijken : [as2] Dynamische link werkt niet binnen functie
GeniusGeri
%Europe/Berlin %543 %2008, 14:02
Ik ben bezig met een wereldkaartje waarbij er een popup verschijnt als je met je muis over bepaald land gaat. Binnen deze popup zitten wat links die mbv xPath uit een xml gehaald wordt. Dit gaat allemaal prima. Zie de bijlage voor een voorbeeld hoe het er uit ziet.
De namen Noodhulp en Sponsorprogramma komen uit de xml. In dezelfde xml staat ook een link-adres waarnaar deze namen gelinkt moeten worden. De links worden dynamisch gegenereerd mbv createTextField:
mijn_txt = _root.popup.createTextField("my_txt"+i, _root.popup.getNextHighestDepth(), 15, ypos, 90, 30);
mijn_txt.multiline = true;
mijn_txt.html = true;
mijn_txt.htmlText = "<a href=\""+ itemlink[i].firstChild.nodeValue +"\">"+itemname[i].firstChild.nodeValue + "</a>";
(code staat binnen een functie loadPopup)
Hoewel er een a href in de htmlTekst staat, kan ik niet op de link klikken. Blijkbaar doe ik iets verkeerd, maar ik zie het even niet. Kunnen jullie een tip geven wat ik fout doe?
Als jullie de volledige functie of het hele fla-bestand willen inzien, hoor ik het wel.
Jan
%Europe/Berlin %615 %2008, 15:45
Tja ik zie er ook zo dadelijk geen fout in. Dus moet je even tracen:
trace(itemlink[i].firstChild.nodeValue);
In plaats van te escapen kan je ook single quotes gebruiken maar het zal in dit geval geen verschil uitmaken denk ik:
mijn_txt.htmlText = '<a href="'+ itemlink[i].firstChild.nodeValue +'">'+itemname[i].firstChild.nodeValue + '</a>';
Groeten,
http://users.telenet.be/jansurf/cwo.pngJan
GeniusGeri
%Europe/Berlin %627 %2008, 16:03
Als ik de trace uitvoer krijg ik netjes mijn link url eruit. Single quotes maakt inderdaad geen verschil.
Gezien de reactie van de muiscursor in de popup lijkt het alsof er nog een layer overheen zit, maar ik zou niet weten waar dat dan zou moeten zijn. Kan het wel iets met verschillende dieptelevels te maken hebben? _root.popup.getNextHighestDepth() zou toch goed moeten zijn?
Heeft iemand verder nog een tip?
GeniusGeri
%Europe/Berlin %337 %2008, 09:05
De volledige functie voor de loadPopup is nu als volgt. Wellicht zien jullie dan direct waar het probleem zit. Volgens mij zitten er geen hele gekke dingen in.
function loadPopup(countrykey, countryname, popupx, popupy)
{
for (var i:Number = 0; i < 10; i++)
{
_root.popup["arrow_mc"].removeMovieClip();
_root.popup["my_txt"+i].removeTextField();
}
_root.popup._visible = true;
_root.popup._x = popupx;
_root.popup._y = popupy;
var mclListener:Object = new Object();
mclListener.onLoadInit = function(target_mc:MovieClip)
{
target_mc._x = 3.1;
target_mc._y = 1.5;
target_mc._width = 98.8;
target_mc._height = 65.7;
};
var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
_root.popup.attachMovie("i"+countrykey, "foto", this.getNextHighestDepth(), {_x:3.1, _y:1.5, _width:98.8, _height:65.7});
_root.popup.titel.text = countryname;
var country_xml:XML = new XML();
country_xml.ignoreWhite = true;
country_xml.onLoad = function(success:Boolean)
{
if (success)
{
// alle gegevens ophalen
var itemname_path:String = "/data/body/object[@name="+countrykey+"]/object[@name=item]/attribute[@name=name]";
var itemname = XPathAPI.selectNodeList(this.firstChild, itemname_path);
var itemlink_path:String = "/data/body/object[@name="+countrykey+"]/object[@name=item]/attribute[@name=link]";
var itemlink = XPathAPI.selectNodeList(this.firstChild, itemlink_path);
var popupheight_path:String = "/data/body/object[@name="+countrykey+"]";
var popupheight = XPathAPI.selectSingleNode(this.firstChild, popupheight_path);
_root.popup.back._height = popupheight.attributes.popupheight;
if (itemname.length > 0)
{
ypos = 90;
for (var i:Number = 0; i < itemname.length; i++)
{
mijn_txt = _root.popup.createTextField("my_txt"+i, _root.popup.getNextHighestDepth(), 15, ypos, 90, 30);
mijn_txt.multiline = true;
mijn_txt.html = true;
mijn_txt.htmlText = "<a href=\""+ itemlink[i].firstChild.nodeValue +"\">"+itemname[i].firstChild.nodeValue + "</a>";
var my_fmt:TextFormat = new TextFormat();
my_fmt.color = 0x000000;
my_fmt.size = 9;
my_fmt.font = "Arial";
mijn_txt.setTextFormat(my_fmt);
// Pijltjes inserten
_root.popup.attachMovie("arrow", "arrow_mc", _root.popup.getNextHighestDepth(), {_x:3, _y:ypos+2});
var index = itemname[i].firstChild.nodeValue.indexOf("<br>");
if (index >= 0)
{
ypos = ypos + (26);
}
else
{
ypos = ypos + (22);
}
}
}
}
}
if (_root.xmlpath != null)
{
country_xml.load (_root.xmlpath);
}
else
{
country_xml.load ("landen.xml");
}
}
tijmen_4real
%Europe/Berlin %337 %2008, 09:06
mijn_txt.htmlText = "<a href='+ itemlink[i].firstChild.nodeValue +'>'+itemname[i].firstChild.nodeValue + '</a>'"; Alle " tekens tussendoor weg....
GeniusGeri
%Europe/Berlin %446 %2008, 11:42
Je bedoeld waarschijnlijk hetzelfde als adnez zei met die single quotes?
mijn_txt.htmlText = "<a href='"+ itemlink[i].firstChild.nodeValue +"'>"+itemname[i].firstChild.nodeValue + "</a>";
Maar dat maakt verder niet uit.
Als ik het meest simpele gebruik als
mijn_txt.htmlText = "<a href='http://www.google.nl'>google</a>";
kan ik ook niet op de link klikken.
Ik kan ook niet de tekst selecteren. Zodra ik met de muis over de popup ga veranderd de muiscursor direct in een handje. En niet alleen op de plek van de link. Kan dat er iets mee te maken hebben? (zie voor een online voorbeeld mn eerdere post)
Dauntless
%Europe/Berlin %461 %2008, 12:05
Dan heb je ergens verkeerde hit-vlakken of een algemene onRelease op _root.popup.
Waar staan er allemaal onRelease's op ?
GeniusGeri
%Europe/Berlin %473 %2008, 12:21
Thanx Dauntless, je hebt me op het juiste spoor gebracht. Ik had ergens het volgende staan:
popup.onRollOut = function () {
popup._visible = false;
}
Nu had ik al wel eens de popup._visible = false; uitgecomment, maar niet de hele onRollOut. Toen ik dat deed, werkte de links wel. Niet gerealiseerd dat het daarmee te maken kon hebben. Weer wat geleerd. Thx again!
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.