Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    interpretare un XML per resettare un array

    Salve, francamente non ho molta pratica con gli xml, spero che qualcuno possa darmi una mano.

    Carico due XML con la stessa struttura, ma dati diversi, ciascuno al click di un bottone.
    il primo mi carica un album con tre immagini, il secondo con due. Quando passo dal primo al secondo, avrò le due nuove immagini più la terza del precedente album (me ne accorgo dal thumbnails e dalla slideshow). Tenete conto che non so cosa faccia l'swf importato nel mio movie perché non ne dispongo il sorgente, di leggibile ho solo XML.

    Cosa e come devo azzerare per avere sempre la situazione a zero prima di caricare il nuovo xml? Potreste darmi una mano a interpretare l'xml in basso?
    GRAZIE a tutti, un vostro help può salvarmi la vita :-)


    <?xml version="1.0" encoding="UTF-8" ?>
    <flash_parameters>
    <preferences>

    <global>
    <basic_property movieWidth="760" movieHeight="420" html_title="Title" loadStyle="Pie" startAutoPlay="true" continuum="true" backgroundColor="0x000000" hideAdobeMenu="false" photoDynamicShow="true" enableURL="true" transitionArray="1,2,3,4,5,6,7,8,9,10,11" frameColor="0xc0c0c0"/>
    <title_property showTitle="false" photoTitleColor="0x000080"/>
    <music_property path="" stream="true" loop="true"/>
    <photo_property topPadding="0" bottomPadding="20" leftPadding="0" rightPadding="0"/>
    <properties enable="true" backgroundColor="0xffffff" backgroundAlpha="30" cssText="a:link{text-decoration: underline;} a:hover{color:#ff0000; text-decoration: none;} a:active{color:#0000ff;text-decoration: none;} .blue {color:#0000ff; font-size:15px; font-style:italic; text-decoration: underline;} .body{color:#ff5500;font-size:20px;}" align="top"/>
    </global>

    <thumbnail>
    <basic_property autoHide="false" width="50" height="35" alpha="70" borderColor="0xfffbf0"/>
    </thumbnail>

    </preferences>

    <album>
    <slide jpegURL="thumbs/t_0004.jpg" d_URL="slides/p_0004.jpg" transition="0" panzoom="1" URLTarget="0" phototime="2" url="" title="2980 bagno" width="760" height="400"/>
    <slide jpegURL="thumbs/t_0005.jpg" d_URL="slides/p_0005.jpg" transition="29" panzoom="1" URLTarget="0" phototime="10" url="http://www.flash-slideshow-maker.com/" title="Powered by Flash Slideshow Maker" width="760" height="400"/>
    </album>

    </flash_parameters>

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    spiacente, la modifica del comportamento è fattibile solo con il sorgente di flash, poichè nel codice dovresti dire di eliminare tutti i clip creati prima di avviare il nuovo caricamento

  3. #3

    probabilmente non mi sono spiegato bene

    Grazie per la tua risposta, per quanto non mi renda molto felice !

    Ho però dei dubbi e te li espongo:
    io ho creato un flash con una instanza contenitore all'interno della quale carico il fla di cui non posseggo il sorgente. In questo modo riesco a comunicare, tanto è vero che gli passo due diversi xml a secondo del bottone pigiato e ho la visualizzazione di immagini differenti. Col debug posso vedere tutti i clip in gioco. Ovviamente il fla senza sorgente non carica le immagini in singoli clip, ma ne utilizza 2 che caricano di volta in volta un'immagine diversa ciascuna e si rimbalzano tra loro le azioni da fare (dissolvenza).

    Ma torniamo all'array. Vorrei capire dove si posizionano i valori caricati in quanto da debug vedo tutte le variabili in gioco, ma non riesco ad identificate quale contiene le immagini, l'url , una maledetta traccia insomma!

    Sta di fatto che caricando i due xml, uno copre l'altro.

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    mmh, ok... allora prova a inserire qui il codice che utilizzi per caricare l'swf della galleria e di volta in volta il modo in cui cambi l'xml e "reinizializzi" la stessa

  5. #5
    questo è lo script, banalissimo, che ho inserito per caricare l'swf e l'xml.

    _global.xml_path="slides01.xml"
    _root.contenitore.loadMovie("foto01.swf");
    stop();



    mentre questo, se può essere di aiuto, è l'as del primo frame del clip di cui non ho il sorgente (l'ho estratto con un decompiler). Posso allegare anche i materiali.


    function setAll()
    {
    var __reg6 = new FsMusic(xmlLoad.musicPath, xmlLoad.musicStream, xmlLoad.musicLoop, globalPath, _this, 3000);
    var __reg8 = new FsBackground(xmlLoad.movieBackgroundColor, _this, 1, xmlLoad.movieWidth, xmlLoad.movieHeight);
    var __reg1 = new PhotoTitle(xmlLoad.showTitle, xmlLoad.movieWidth, xmlLoad.movieHeight, xmlLoad.photoTitleColor, 4540, _this, xmlLoad.photoTitleArray);
    var __reg3 = new MovieBorder(xmlLoad.showTitle, xmlLoad.movieWidth, xmlLoad.movieHeight, xmlLoad.frameColor, 4535, _this);
    var __reg2 = new FsSlide(xmlLoad.randomTransitionArray, xmlLoad.photoDynamicShow, xmlLoad.photoPanzoom, xmlLoad.enableURL, xmlLoad.URLTarget, xmlLoad.topPadding, xmlLoad.bottomPadding, xmlLoad.leftPadding, xmlLoad.rightPadding, xmlLoad.startAutoPlay, xmlLoad.movieWidth - xmlLoad.leftPadding - xmlLoad.rightPadding, xmlLoad.movieHeight - xmlLoad.topPadding - xmlLoad.bottomPadding, 0, 0, _this, 1000, xmlLoad.photoArray, xmlLoad.transitionArray, xmlLoad.loadStyle, xmlLoad.leftPadding + (xmlLoad.movieWidth - xmlLoad.leftPadding - xmlLoad.rightPadding) / 2, xmlLoad.topPadding + (xmlLoad.movieHeight - xmlLoad.topPadding - xmlLoad.bottomPadding) / 2, xmlLoad.photoTimeArray, xmlLoad.photoUrlArray, xmlLoad.continuum, globalPath, __reg1);
    var __reg4 = new Decoration(xmlLoad.decoration, 0, 0, 4515, _this, globalPath);
    var __reg5 = new FsThumbnail(xmlLoad.showTitle, xmlLoad.thumbnailBorderColor, xmlLoad.autoHide, xmlLoad.movieWidth, xmlLoad.movieHeight, 4530, _this, xmlLoad.thumbnailWidth, xmlLoad.thumbnailAlpha, xmlLoad.thumbnailHeight, xmlLoad.photoThumbnailArray, __reg2, globalPath);
    var __reg7 = new Description(xmlLoad.desAlign, xmlLoad.enableDes, xmlLoad.desBackgroundColor, xmlLoad.desBackgroundAlpha, xmlLoad.cssText, xmlLoad.commText, 1500, _this);
    }

    function addGlobal()
    {
    _global.photoWidth = xmlLoad.movieWidth - xmlLoad.leftPadding - xmlLoad.rightPadding;
    _global.photoHeight = xmlLoad.movieHeight - xmlLoad.topPadding - xmlLoad.bottomPadding;
    _global.photoX = xmlLoad.leftPadding;
    _global.photoY = xmlLoad.topPadding;
    }

    function showMenu()
    {
    function goTo()
    {
    getURL("http://www.flash-slideshow-maker.com/", "");
    }

    var __reg2 = new ContextMenu();
    __reg2.hideBuiltInItems();
    __reg2.customItems.push(new ContextMenuItem("Powered by Flash Slideshow Maker", goTo));
    _root.menu = __reg2;
    }

    function hideMenu()
    {
    var __reg2 = new ContextMenu();
    __reg2.hideBuiltInItems();
    _root.menu = __reg2;
    }

    var _this = this;
    _this.stop();
    _this.mcBase.swapDepths(100);
    _this.mcBase.removeMovieClip();
    var xmlLoad = new FsXmlLoad();
    var traceText = new TraceText("Arial", 12, 10066329, 300, 30, 5000, _this);
    var xmlListener = new Object();
    xmlListener.succeed = function ()
    {
    if (xmlLoad.anvsoftMenu == undefined)
    {
    showMenu();
    }
    else
    {
    if (xmlLoad.hideAdobeMenu == "true")
    {
    hideMenu();
    }

    }


    addGlobal();
    setAll();
    }
    ;
    xmlListener.fail = function ()
    {
    traceText.setText("LOAD FAIL");
    }
    ;
    xmlLoad.addEventListener(FsXmlLoad.COMPLETE, xmlListener);
    xmlLoad.addEventListener(FsXmlLoad.FAIL, xmlListener);
    var xmlPath;
    if (xml_path == undefined)
    {
    if (fs_path == undefined)
    {
    xmlPath = "slides.xml";
    var globalPath = "";
    }
    else
    {
    xmlPath = fs_path + "/slides.xml";
    var globalPath = fs_path + "/";
    }


    }
    else
    {
    xmlPath = xml_path;
    var globalPath = xml_path.substr(0, xml_path.lastIndexOf("/") + 1);
    }


    xmlLoad.load(xmlPath);

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    il secondo codice se non hai il permesso di estrarlo, lo lasciamo da parte
    mentre per il primo codice, ok... ma vorrei che tu fossi più preciso per capire come si può fare, dimmi, ogni volta che cambi l'xml su _global ricarichi il clip dentro "contenitore"? o cambi target, o ancora non lo ricarichi per nulla

  7. #7

    Giuste richieste :-)

    Hai perfettamente ragione, mi sono dilungato su alcune cose omettendo le più importanti.

    Allora:
    il mio breve codice funziona in tutti i modi, nel senso che conservo sempre "contenitore" come istanza, cambio il nome dell'xml e faccio ricaricare l'swf esterno in modo che possa aggiornare la lettura dell'xml.
    Ogni bottone quindi contiene lo stesso codice tranne il nome dell'xml.

    L'swf esterno è quindi un "motore" che si adatta alla carrozzeria (le slide).

    Il decompiler mi serviva solo per accellerare i tempi di comprensione :-). Piccolo peccato veniale! Non intendo modificarlo o copiarlo, ma semplicemente capire come interfacciarlo al mio movie.

    Ciò che non mi è chiaro è dove vengono posizionati i valori dell'xml in flash.

    con xmlLoad.load("nomefile.xml") leggo tutte le variabili necessarie per gestire l'swf esterno, ma da dove se nel debug non ne trovo nessuna che corrisponda al nome di un mio file jpg (anche in global).
    Dalla strutura della stringa relativa ad una slide nel xml è evidente che alla fine tutte insieme costituiscono una matrice, ma se solo si potesse azzerare la sua dimensione prima di ricaricare l'xml, avrei ciò che mi serve!

    Ciao, non so come ringraziarti!

    Ps: io sono un web designer, a detta di molti (amici :-) bravino. Se posso sdebitarmi ...

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    allora, ti dico quello che penso dopo la descrizione che mi hai fatto
    credo che il file esterno utilizzi la timeline principale (_root) per creare i movieclip di cui ha bisogno per caricare le immagini della gallery, e probabilmente alla stessa maniera utilizza _root per creare l'array con i dati, bisognerebbe quindi verificare in debug, a caricamento esterno completato, se si sono aggiunti elementi a _root, e in caso positivo, sapremo anche cosa bisogna eliminare prima del successivo caricamento

    all'interno del tuo pulsante prova a modificare il codice in questa maniera:

    Codice PHP:
    _global.xml_path="slides01.xml"
    var loader = new MovieClipLoader();
    loader.onLoadInit = function (target) {
        for (var 
    prop in _root) {
            
    trace(prop+": "+_root[prop]);
        }
    }
    loader.loadClip("foto01.swf"_root.contenitore);
    stop(); 
    e dimmi cosa ottieni nel trace

  9. #9
    premendo il tasto con il tuo as:

    loader: [object Object]
    $version: WIN 8,0,22,0
    instance2: _level0.instance2
    instance1: _level0.instance1
    contenitore: _level0.contenitore


    premendo un secondo tasto, stesso codice, ma con un differente xml:

    menu: [object Object]
    loader: [object Object]
    $version: WIN 8,0,22,0
    reserved: _level0.reserved
    instance2: _level0.instance2
    instance1: _level0.instance1
    contenitore: _level0.contenitore

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ok, sembra che abbia prodotto qualcosa...
    vediamo cosa è quel "reserved"

    Codice PHP:
    _global.xml_path="slides01.xml"
    var loader = new MovieClipLoader();
    loader.onLoadInit = function (target) {
        for (var 
    prop in _root.reserved) {
            
    trace(prop+": "+_root.reserved[prop]);
        }
    }
    loader.loadClip("foto01.swf"_root.contenitore);
    stop(); 
    se questa volta il trace riporta una serie di clip pari al numero dei clip che dovrebbero comporre la tua galleria, direi che sappiamo cosa dobbiamo eliminare

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 © 2024 vBulletin Solutions, Inc. All rights reserved.