5 berichten aan het bekijken - 1 tot 5 (van in totaal 5)
  • Q:
    Bijdrager
    icreate

    actionscript probleempje?

    beste flashgoden,

    Ik heb juist een tutorial gevolgd over het ophalen van gegevens uit een mysql database via php en vervolgens te tonen via flash. Niets speciaals, gewoon een veld date en news. Lukte allemaal vlotjes tot ik zelf probeerde uit te breiden door een veld “titel” toe te voegen. Nu komen mijn gegevens wel zichtbaar via flash maar de datum komt soms in het tekstkadertje van titel en het nieuws zelf in het tekstveld datum enzoverder … er moet dus ergens iets misgegaan zijn.

    iemand die me hierbij even kan helpen aub? Ik krijg het echt niet voor mekaar, ik ben er al veel te lang naar aan het zoeken:(

    mijn (getdata.php) php output is:
    [code:1:05d80412b1]&date0=01/09/2007&title0=bericht 1&news0=Dit is een eerste bericht &date1=05/09/2007&title1=bericht 2&news1=Dit is een tweede bericht &date2=10/09/2007&title2=bericht 3&news2=Dit is een 3de bericht[/code:1:05d80412b1]

    men actionscript ziet er zo uit:
    [code:1:05d80412b1]System.useCodepage = true;
    format = new TextFormat();

    testo.html = true;

    testo.text = "Loading news…";
    title.text = "Loading title…";
    date.text = "Loading date …";

    temp = new LoadVars();
    temp.load("getdata.php");
    temp.onLoad = function(){
    myArray = new Array();
    for(var a in this){
    if(a != "onLoad"){
    myArray.push(this[a]);
    }
    }
    date.text = myArray[0];
    title.text = myArray[1];
    testo.htmlText = myArray[2];
    var oldt = getTimer();
    var ok = true;
    var l = myArray.length;
    var i = 2;
    _root.onEnterFrame = function(){
    t = getTimer();
    if(t-oldt>5000){
    date.text = myArray[i];
    title.htmlText = myArray[i+1];
    testo.htmlText = myArray[i+2];
    if(i<(l-2)){
    i += 2;
    }else{
    i = 0;
    }
    oldt = getTimer();
    }
    };
    };
    [/code:1:05d80412b1]

    alvast enorm bedankt
    ik ben pas aan het leren

    Bijdrager
    apenstaartje

    Het gebruik van XML maakt het allemaal stukken eenvoudiger voor dergelijke taken. Ik zal zo even daar wat over posten.

    Bijdrager
    apenstaartje

    De PHP laat je de xml maken, op zich zal dat niet zo veel verschil zijn als nu, alleen dat je er wat xml zut omheen plaatst.

    Een voorbeeld van de XML
    [code:1:e54aafb3b6]
    <news>
    <newsitem date="01/09/2007">
    <title><![CDATA[Bericht 1]]></title>
    <message><![CDATA[Dit is een eerste bericht]]></message>
    </newsitem>
    <newsitem date="05/09/2007">
    <title><![CDATA[Bericht 5]]></title>
    <message><![CDATA[Dit is een tweede bericht]]></message>
    </newsitem>
    <newsitem date="10/09/2007">
    <title><![CDATA[Bericht 3]]></title>
    <message><![CDATA[Dit is een 3de bericht]]></message>
    </newsitem>
    </news>
    [/code:1:e54aafb3b6]

    In Actionscript kun je op meerdere manieren door de xml heen gaan, maar eerst gaan we deze maar eens laden.

    [code:1:e54aafb3b6]
    var data:XML = new XML();
    data.ignoreWhite = true;
    data.onLoad = onDataLoaded;
    data.load("getdata.php");

    function onDataLoaded(success:Boolean):Void
    {
    // doe iets met de data
    }

    [/code:1:e54aafb3b6]

    Nu we de boel kunnen laden, willen we er natuurlijk ook iets mee doen.
    Het is mogelijk om helemaal door de XML heen te loopen op basis van elke node, maar dit is erg foutgevoelig (als je wat veranderd in de xml is het meteen stuk). En het is zeker niet erg flexibel etc.
    Een andere manier is gebruik te maken van een XPath class en de XQuery syntax.
    leesvoer:
    http://www.w3schools.com/xpath/ (voorbeelden en simpele uitleg)
    http://www.w3.org/TR/xpath (complexe uitleg)

    Om met deze dingen te kunnen spelen kan of de mx.xpath.XPathAPI gebruikt worden, of een XPath implementatie van XFactor Studio (http://www.xfactorstudio.com/).
    Zelf gebruik ik altijd die laatste (die gebruikte ik ook al voordat die van Macromedia er zelf was) en die is ook wat completer, maar beiden zullen hier voldoen. De aanroepen zijn wel iets verschillend.

    (Vanuit de documentatie van die er standaard in zit, is hier wat leesvoer te vinden: http://download.macromedia.com/pub/documentation/en/flash/fl8/XpathAPI.pdf )

    Ik heb geprobeerd een voorbeeld te maken met die aanwezig is, maar daarmee kwam ik echt niet uit de fouten (echt een vervelend ding;) ), dus heb ik die van XFactor studio gebruikt (even downloaden dus en in de map zetten).

    [code:1:e54aafb3b6]
    import com.xfactorstudio.xml.xpath.XPath;

    function onDataLoaded(success:Boolean):Void
    {
    var newsItems:Array = new Array();

    // data is met success geladen
    if (success)
    {
    var newsNodes:Array = XPath.selectNodes(data.firstChild, "/news/newsitem");

    for (var i:Number = 0; i < newsNodes.length; i++)
    {
    var newsNode:XMLNode = newsNodes[i];

    var newsItem:Object = new Object();
    newsItem.date = newsNode.attributes.date;
    newsItem.title = XPath.selectSingleNode(newsNode, "./title/text()");
    newsItem.message = XPath.selectSingleNode(newsNode, "./message/text()");

    newsItems.push(newsItem);
    }
    }

    placeNewsItems(newsItems);
    }

    function placeNewsItems(newsItems:Array):Void
    {
    for (var i:Number = 0; i < newsItems.length; i++)
    {
    var item:Object = newsItems[i];

    trace("news item:");
    trace("date: " + item.date);
    trace("title: " + item.title);
    trace("message: " + item.message);
    trace("");
    }
    }
    [/code:1:e54aafb3b6]

    In placeNewsItems kun je dan je ding doen…
    Als je het een en ander wilt laten animeren op basis van code, dan is dit een hele goede ingang:
    http://www.mosessupposes.com/Fuse/

    Hierbij kun je dan alle animates bv ook al klaar zetten, en er een delay aan meegeven, zodat ze pas na x aantal secondes beginnen :).

    Hopelijk kom je er zo een beetje uit, ik hoor het anders wel.
    Goed leesvoer is ook: http://www.moock.org/eas2/
    Voor zowel beginners als gevorderden.

    Bijdrager
    icreate

    super! erg bedankt, heb alle documentatie doorgenomen en ben nu zelf aan de slag gegaan.

    hopelijk bak ik er iets van want ik moet eerlijk toegeven dat het allemaal toch niet zo simpel is als het eruit ziet:)

    nogmaals dank!

    Bijdrager
    apenstaartje

    Ach, in het begin is het misschien even puzzelen, maar het voordeel is, dat als je dit eenmaal een beetje beheerst, je het elke keer weer kan gebruiken.

5 berichten aan het bekijken - 1 tot 5 (van in totaal 5)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.