Visualizzazione dei risultati da 1 a 10 su 10

Discussione: lo "zpos"

  1. #1

    lo "zpos"

    ciao a tutti.
    il mio problema è che devo realizzare un sito in flash... lo sfondo di questo sito non è fisso, ma ci sono delle immagini che scorrono una sull'altra.
    io ho fatto tutti gli elementi che mi servono (pulsanti ecc) e poi ho aggiunto un codice che mi permette di richiamare le immagini (quelle dello sfondo) con l'xml.
    il tutto funziona... non fosse che lo sfondo sta in primo piano mentre tutti gli altri elementi restano dietro. ho visto che nel codice c'è una parte che si riferisce allo "zpos" ma io non riesco a farlo funzionare... ho provato a mettere il valore nell'xml delle immagini e nel codice di flash ma nn c'è stato niente da fare... qualcuno puö aiutarmi o almeno spiegarmi cosa sbaglio???

    Aggiungo qui sotto tutta la parte di codice che riguarda lo sfondo.

    GRAZIE A TUTTI


    var randomNum = 0;
    var randomNumLast = 0;

    // parent container
    var container_mc = this.createEmptyMovieClip("container",0);
    // movie clip containers
    container_mc.createEmptyMovieClip("loader1_mc",2);
    container_mc.createEmptyMovieClip("loader2_mc",1);

    // preload watcher
    this.createEmptyMovieClip("watcher_mc",100)
    //swapDepths

    // load xml
    images_xml = new XML();
    images_xml.ignoreWhite=true;
    images_xml.onLoad = parse;
    images_xml.load ("images.xml")
    //images_xml.load(_root.xmlFile);

    function parse(success) {
    if (success) {
    trace('pippo');
    imageArray = new Array();
    var root = this.firstChild;
    _global.numPause = Number(this.firstChild.attributes.timer * 1000);
    _global.order = this.firstChild.attributes.order;
    _global.looping = this.firstChild.attributes.looping;
    _global.fadetime = Number(this.firstChild.attributes.fadetime);
    //_global.xpos = Number(this.firstChild.attributes.xpos);
    _global.ypos = Number(this.firstChild.attributes.ypos);
    _global.zpos = Number(this.firstChild.attributes.zpos);
    var imageNode = root.lastChild;
    var s=0;
    while (imageNode.nodeName != null) {
    imageData = new Object;
    imageData.path = imageNode.attributes.path;
    imageArray[s]=imageData;
    imageNode = imageNode.previousSibling;
    s++;
    }
    // place parent container
    //container_mc._x = _global.xpos;
    container_mc._y = _global.ypos;//_global.ypos;
    container_mc._z = "-100"//"-100"
    // parse array
    imageArray.reverse();
    imageGen(imageArray);
    } else {
    trace('problem');
    }
    }

    // depth swapping
    function swapPlace(clip,num) {
    eval(clip).swapDepths(eval("container_mc.loader"+n um+"_mc"));
    }

    function loadImages(data,num) {
    if (i==undefined || i == 2) {
    i=2;
    createLoader(i,data,num);
    i=1;
    } else if (i==1) {
    createLoader(i,data,num);
    i=2;
    }
    }
    function createLoader(i,data,num) {
    thisLoader=eval("container_mc.loader"+i+"_mc");
    thisLoader._alpha=0;
    thisLoader._x=0;
    thisLoader.loadMovie(data[num].path);
    watcher_mc.onEnterFrame=function () {
    var picLoaded = thisLoader.getBytesLoaded();
    var picBytes = thisLoader.getBytesTotal();
    if (isNaN(picBytes) || picBytes < 4) {
    return;
    }
    if (picLoaded / picBytes >= 1) {
    swapPlace("container_mc.loader2_mc",1);//1
    alphaTween = new mx.transitions.Tween(thisLoader, "_alpha", mx.transitions.easing.Regular.easeOut,0,100,_globa l.fadetime,true);
    xTween = new mx.transitions.Tween(thisLoader, "_x", mx.transitions.easing.Regular.easeOut,-800,0,_global.fadetime,true);//800
    timerInterval = setInterval(imageGen,_global.numPause,data);
    delete this.onEnterFrame;
    }
    }
    }
    function imageGen(data) {
    // random, or sequential?
    if (_global.order == "random") {
    // choose random # between 0 and total number of images
    while (randomNum == randomNumLast) {
    randomNum = Math.floor(Math.random() * data.length);
    trace(randomNum);
    }
    loadImages(data,randomNum);
    randomNumLast = randomNum;
    } else if (_global.order == "sequential") {
    // start at 0, increment to total number of images, then drop back to zero when done
    if (p == undefined || p == data.length && _global.looping == "yes") { p=0; } else { break; }
    loadImages(data,p);
    p++;
    } else {
    trace ("order attribute in xml isn't correct - must specify either 'random' or 'sequential'");
    }
    clearInterval(timerInterval);
    stop();
    }

  2. #2
    Utente bannato
    Registrato dal
    Jan 2009
    Messaggi
    713

    potresti mettere tutti gli elementi dello stage dentro un clip

    e poi dai un ordine di precedenza con questo script

    codice:
    pulsante.onRelease = function() {
        myMC1_mc.swapDepths(myMC2_mc);
    };
    modifichi questo script togliendo la prima e la terza riga
    e il gioco è fatto

    ecco l'esempio
    http://max400scuola.altervista.org/a...opra-altro.htm

    au revoir
    _________
    by max

  3. #3

    swapDepths

    ciao!! =)

    grazie per l'aiuto è stato molto utile... solo che ho un'altro problemino.... e credo che il mal funzionamento dei pulsanti sia dovuto propio allo "swapDepths".

    cerco di spiegarmi =)

    io ho un livello con le immagini che scorrono e poi uno con il menu... i pulsanti del menu sono 4 movieclip contenuti in un unico movie che si chiama "menu" =)
    quando clicco su un pulsante richiamo un swf esterno (e fin qui tutto bene) solo che i pulsanti restano.... o meglio dovrebbero restare attivi... questo succede SOLO dal secondo clik in poi... cioè la prima volta che clicco (su uno qualsiasi dei pulsanti) il pulsante nn resta in over ma poi se clicco su uno degli altri tutto funziona come dovrebbe.
    In pratica nn funziona solo con il primo click.

    metto il codice dei pulsanti....
    allora i pulsanti sono dei movie nel primo frame di questi movie c'è questo codice:

    stop();
    _global.experiencebuttclicked = false;
    experience_mc.onEnterFrame = function(){
    if(experienceover){
    experience_mc.nextFrame();
    }else{
    experience_mc.prevFrame();
    }
    };

    sul pulsante che è sopra un'alto movie (quello dell'animazione) c'è questo codice:

    on (release) {
    _root.boxMenu1 = 5;

    tellTarget ("_root") {
    gotoAndPlay("vai");
    }
    _global.experiencebuttclicked = true;
    _global.photogallerybuttclicked = false;
    _global.videogallerybuttclicked = false;
    _global.partnerbuttclicked = false;

    _global.experienceover = true;
    _global.photogalleryover = false;
    _global.videogalleryover = false;
    _global.partnerover = false;
    }

    on (rollOver) {
    _global.experienceover = true;
    }
    on (rollOut) {
    if (_global.experiencebuttclicked) {
    _global.experienceover = true;
    } else {
    _global.experienceover = false;
    }
    }

    se qualcuno riesce a capirci qualcosa e a darmi qualche consiglio diventerà il/la mio/a eroe/ina xsonale =)

    grazie a tutti

  4. #4
    Utente bannato
    Registrato dal
    Jan 2009
    Messaggi
    713

    quindi il problema è nel click ciè devi premere 2 volte?

    prova a mettere
    _global.experienceover = true;
    nel primo fotogramma...
    mi sembra che manchi...

  5. #5
    ho provato.. solo che in questo modo il pulsante mi va in over subito.. senza che io ci vado sopra col mouse.

    cosa vuol dire questa riga di codice?

    function swapPlace(clip,num) {
    eval(clip).swapDepths(eval("container_mc.loader"+n um+"_mc"));
    }

    graze x l'aiuto =)

  6. #6
    Utente bannato
    Registrato dal
    Jan 2009
    Messaggi
    713

    metti false anzicchè true

    eval serve ad unire un clip con un numero legato ad un ciclo
    codice:
    tipo questo
    name1 = "mike"; 
    name2 = "debbie"; 
    for(i = 1; i <= 2; i++) { 
        trace (eval("name" add i));        // Output: mike, debbie, logan 
    }
    o meglio un clip ed una variabile
    codice:
    on (press) {
    i = 2;
    x = eval("mc"+i);
    x.play();
    // Ciò equivale a mc2.play();
    }

  7. #7
    ciao!!!

    ho utilizzazo lo swapDepths e funziona bene =)

    volevo solo sapere se era possibile associare uno swapDepths ad una scena.

    io ho una scena in cui vedo una playlist di filmati flv.... la playlist dovrebbe stare sopra delle immagini di sfondo che variano... solo che la barra della playlist (quella dove si vede l'avanzamento del filmato e i pulsanti stop play ecc) si vede bene (cioè sopra lo sfondo) mentre il filmato mi rimane sotto lo sfondo. =(

    perciö ho pensato che se al posto di associare lo swapDepths ad ogni elemento della playlist lo associo alla scena intera dovrebbe funzionare... o no????

    non posso mettere tutta la playlist all'interno di un unico elemento altrimenti xdo tutti i collegamenti e visto che nn ho moltissimo tempo e nn sono molto brava con queste cose vorrei semplificarmi il + possibile la vita =)

    avete consigli????

    grazie

  8. #8
    Utente bannato
    Registrato dal
    Jan 2009
    Messaggi
    713

    ci sono altri modi per gestire la profodita di un clip rispetto ad un altro

    basta cliccare col destro del mouse sul clip in questione...
    ti compare un menu di scelta rapida e cliccando sulla voce "disponi"
    puoi dare un ordine di precedenza sul clip in questione:

    - porta in primo piano
    - porta avanti
    - sposta dietro
    ecc...

    poi lo swapDepths non so se lo puoi applicare ad una scena ...
    io l'ho sempre utilizzato per i clip

    in ogni caso ci sono i livelli di profondita
    se tu imposti un livello 10 per le foto e un livello 14 per il video...
    il video starà sopra le foto

    esempio:
    loadMovieNum("foto.jpg", 10);
    loadMovieNum("video.swf", 14);

    con loadMovieNum puoi gestire sia foto che video

    poi per la playlist io uso il componente di Flash "list"

  9. #9
    mmmmmmmmmmmm

    non riesco a metterlo in primo piano... =(

    io x il video+playlist sto usando questo:

    http://www.juliusdesign.net/jd-player-flv-playlist/

    solo che l'ho messo all'interno di una scena (x esempio scena02) e solo l'elemento che si chiama "flv" mi rimane sotto gli elementi della scena01... l'unica spiegazione che mi viene è che quel tipo di elemento nn gestisce il posizionamento... ma mi sembra assurdo... xciö la spiegazione + logica è che mi sfugge qualcosa... ma cosa????

    tu conosci altri metodi per gestire lo zpos?

    grazie x l'aiuto che mi stai dando =)

  10. #10
    Utente bannato
    Registrato dal
    Jan 2009
    Messaggi
    713

    altri modi per gestire la profondita dei clip

    ... oltre a loadMovieNum ci sarebbe attachMovie e duplicateMovieClip
    le foto che hai nello stage le puoi prendere direttamente dalla libreria
    con attachMovie e dargli il livello di profondità lo stesso vale per i clip
    naturalmete devi sempre usare lo stesso metodo...

    Per gestire la profondità degli elementi dello stage
    o usi loadMovieNum oppure attachMovie ed ancora i cicli for

    devi fare attenzione a non usare lo stesso livello di profondita
    ad esempio se le foto le carichi sul livello 2 e dai lo stesso livello con i video
    quest'ultimi non li vedrai....
    esempio:
    codice:
    duplicateMovieClip("prova", "prova2", 2);
    prova2._x=100;
    prova2._y=100;
    duplicateMovieClip("originale", "duplicato", 3);
    duplicato._x=120;
    duplicato._y=120;
    qui ho copiato un oggetto (un clip sul livello2)
    codice:
    duplicateMovieClip("prova", "prova2", 2);
    prova2._x=100;
    prova2._y=100;
    e qui un altro oggetto al livello 3
    codice:
    duplicateMovieClip("originale", "duplicato", 3);
    duplicato._x=120;
    duplicato._y=120;
    è molto utile il comando getNextHighestDepth()
    dove next sta per nuovo e depth= profondita

    qui sotto c'è un esempio di due cicli
    codice:
    for(k=1;k<=4;k++) {
    	duplicateMovieClip("nebula", "nebula"+k, getNextHighestDepth());
    		_root.nebula._x=-150; _root.nebula._y=1;
    		_root.nebula1._x=150; _root.nebula1._y=120;
    		_root.nebula2._x=200; _root.nebula2._y=120;
    		_root.nebula3._x=250; _root.nebula3._y=120;
    	}
    for(j=1;j<=3;j++) {
    	duplicateMovieClip("blu", "blu"+j, getNextHighestDepth());
    		_root.blu._x=-200; _root.blu._y=1;
    		_root.blu1._x=100; _root.blu1._y=200;
    		_root.blu2._x=150; _root.blu2._y=200;
    		_root.blu3._x=200; _root.blu3._y=200;
    	}
    per evitare di utilizzare lo stesso livello di profodità ho usato getNextHighestDepth()

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.