Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    leggere xml inversamente (dall'ultima notizia fino alla prima)

    Salve a tutti,
    Ho un piccolo problema con un xml che carico per leggere notizie.... Il tutto funziona correttamente solo che vorrei leggere inversamente l'xml ovvero dall'ultima notizia fino alla prima...Credo di saper che parte va modificata solo che non ne vengo a capo...

    il codice è strutturato cosí

    Codice PHP:
    // Load XML
    var mainNews:XML = new XML();
    mainNews.ignoreWhite true;
    mainNews.onLoad buildnews;
    mainNews.load("news.xml"+getSkipCacheString());
    function 
    buildnews(success:Boolean):Void {
        if (
    success) {
            var 
    allNews:XMLNode mainNews.firstChild;
            var 
    allNewsTotal:Number allNews.childNodes.length;
            
    //var newsTitle:MovieClip = scope.attachMovie("title", "title", 501);
            
    newsTitle._x 35;
            
    newsTitle._y 20;
            
    fade(newsTitle01001.9Strong.easeOut);
            var 
    topMask:MovieClip scope.attachMovie("mask""topMask"500);
            
    topMask._x = -167;
            
    topMask._y = -55;
            
    news.setMask(topMask);
            var 
    i:Number;
            for (
    i=0i<allNewsTotali++) {
                var 
    newsItem:MovieClip news.attachMovie("newsItem""newsItem"+ii);
                
    //  xml info 
                
    newsItem.nDay allNews.childNodes[i].childNodes[0].attributes.day;
                
    newsItem.nMonth allNews.childNodes[i].childNodes[0].attributes.month;
                
    newsItem.nYear allNews.childNodes[i].childNodes[0].attributes.year;
                
    newsItem.nTitle allNews.childNodes[i].childNodes[1].firstChild.nodeValue;
                
    newsItem.des allNews.childNodes[i].childNodes[2].firstChild.nodeValue;
                
    newsItem.iTitle.iText.text newsItem.nTitle;
                
    newsItem.sDes.sText.html true
                newsItem
    .sDes.sText.htmlText newsItem.des;
                
    newsItem.sDes.sText.autoSize true;
                
    newsItem.nDate.nDay.text newsItem.nDay;
                
    newsItem.nDate.nMonth.text newsItem.nMonth;
                
    newsItem.nDate.nYear.text newsItem.nYear;
                
    // 
                
    newsItem._x 0;
                
    newsItem.pos scope.news['newsItem'+(i-1)]._y+scope.news['newsItem'+(i-1)]._height+itemSpacing;
                
    newsItem._y newsItem.pos;
                if (
    i<noItems) {
                    
    // mostro news items 
                    
    fade(newsItem0100introSpeed+i*0.6Strong.easeInOut);
                } else {
                    
    // nascondo altri itmes
                    
    newsItem._alpha 0;
                }
            } 
    credo si debba modificare questa parte di codice ....

    for (i=0; i<allNewsTotal; i++) {
    ho provato con i-- ma va in crash flash dicendomi che lo script è dannoso....
    Qualcuno potrebbe spiegarmi se è esattamente questa la parte da modificare e come ?


    grazie in anticipo....

  2. #2
    nessuno sa che parte modificare?


    grazie.

  3. #3
    carica i dati che legge dal xml in un array e poi leggi l'array dopo aver cambiato le posizioni con un for oppure stampi direttamente con un for e invece di incrementare decrementi la variabile iniziando dalla lunghezza massima dell'array a scendere.

    è la prima soluzione che mi viene in mente

    o ancora meglio
    riscrivi xml al contrario


  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,776
    codice:
    for (i=allNewsTotal-1; i>=0; i--) {
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Originariamente inviato da KillerWorm
    codice:
    for (i=allNewsTotal-1; i>=0; i--) {
    bravo è quello che intendevo

  6. #6
    grazie ...

    appena provato ma nulla.... ora si accavallano le prime due notizie....


  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,776
    Alla fine del ciclo c'è una condizione.
    Prova a modificarla in questo modo:
    codice:
    if (i>=allNewsTotal-noItems) {
    	// mostro news items
    	fade(newsItem, 0, 100, introSpeed+i*0.6, Strong.easeInOut);
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Grazie KillerWorm per la risposta in ogni modo ho risolto... posto la soluzione

    Codice PHP:
    for (i=0i<allNewsTotali++) {
                var 
    newsItem:MovieClip news.attachMovie("newsItem""newsItem"+ii);
                
    // get xml info 
                
    newsItem.nDay allNews.childNodes[i].childNodes[0].attributes.day;
                
    newsItem.nMonth allNews.childNodes[i].childNodes[0].attributes.month;
                
    newsItem.nYear allNews.childNodes[i].childNodes[0].attributes.year;
                
    newsItem.nTitle allNews.childNodes[i].childNodes[1].firstChild.nodeValue;
                
    newsItem.des allNews.childNodes[i].childNodes[2].firstChild.nodeValue;
                
    newsItem.iTitle.iText.text newsItem.nTitle;
                
    newsItem.sDes.sText.html true
                newsItem
    .sDes.sText.htmlText newsItem.des;
                
    newsItem.sDes.sText.autoSize true;
                
    newsItem.nDate.nDay.text newsItem.nDay;
                
    newsItem.nDate.nMonth.text newsItem.nMonth;
                
    newsItem.nDate.nYear.text newsItem.nYear;
                
    // intro for newsItem + positioning 
                
    newsItem._x 0;
                
    newsItem.pos scope.news['newsItem'+(i-1)]._y+scope.news['newsItem'+(i-1)]._height+itemSpacing;
                
    newsItem._y newsItem.pos;
                if (
    i<noItems) {
                    
    // show the first news items 
                    
    fade(newsItem0100introSpeed+i*0.6Strong.easeInOut);
                } else {
                    
    // hide other itmes
                    
    newsItem._alpha 0;
                }
            }
            
    olderBtn.onRelease = function():Void  {
                if (
    id>=&& id<allNewsTotal-noItems) {
                    
    stopQuick(this);
                    
    newerBtn._alpha 100;
                    
    newerBtn.enabled true;
                    var 
    a:Number id+noItems;
                    
    slide(newsnews._ynews._y-scope.news['newsItem'+id]._height-itemSpacing0.7"_y");
                    
    fade(scope.news['newsItem'+id], 10002.2Strong.easeOut);
                    
    fade(scope.news['newsItem'+a], 01001.5Strong.easeInOut);
                    if (
    id == 0) {
                        
    colorChange(newerBtn.txtdisableColornormalColor1);
                    }
                    
    id++;
                }
                if (
    id == allNewsTotal-noItems) {
                    
    this.enabled false;
                    
    this._alpha 50;
                    
    slide(this.plus040.5"_y");
                }
            };
            
    olderBtn.onRollOver = function():Void  {
                
    slide(this.plus1040.5"_y");
                
    fade(this.plus01001Strong.easeOut);
            };
            
    olderBtn.onRollOut = function():Void  {
                
    slide(this.plus4100.5"_y");
                
    fade(this.plus10001Strong.easeOut);
            };
            
    newerBtn.onRelease = function():Void  {
                if (
    id<allNewsTotal && id>0) {
                    
    stopQuick(this);
                    
    olderBtn._alpha 100;
                    
    olderBtn.enabled true;
                    var 
    b:Number id-1;
                    var 
    c:Number id+noItems-1;
                    
    slide(newsnews._ynews._y+scope.news['newsItem'+b]._height+itemSpacing0.7"_y");
                    
    fade(scope.news['newsItem'+b], 01001.5Strong.easeInOut);
                    
    fade(scope.news['newsItem'+c], 10001.2Strong.easeOut);
                    
    id--;
                }
                if (
    id == allNewsTotal-(noItems+1)) {
                    
    colorChange(olderBtn.txtdisableColornormalColor1);
                }
                if (
    id == 0) {
                    
    this.enabled false;
                    
    this._alpha 50;
                    
    slide(this.minus040.5"_y");
                }
            };
            
    newerBtn.onRollOver = function():Void  {
                
    slide(this.minus1050.5"_y");
                
    fade(this.minus01001Strong.easeOut);
            };
            
    newerBtn.onRollOut = function():Void  {
                
    slide(this.minus5100.5"_y");
                
    fade(this.minus10001Strong.easeOut);
            };
        } else {
            
    trace("XML NOT LOADED");
        }


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.