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

    rollover pulsante in primo piano assoluto

    Ciao a tutti,
    Ho un problema con flash che non riesco a risolvere;

    Ho una mappa del mondo con dei puntini che segnalano alcune città,
    al passaggio del mouse sui puntini ho la necessità che mi si apra una finestra con alcune info.

    Quindi ho fatto i puntini come pulsanti, e sul rollover ho inserito il clip filmato della finestra.
    il problema è che alcuni puntini si sovrappongono alle finestre, e invece le finestre dovrebbero essere sempre in primo piano.
    Come fare? posso inserire qualche script per risolvere il problema?(sto usando action script 3, flash cs6)

    Spero di essere stata abbastanza chiara.
    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Olbia
    Messaggi
    2,930
    Se ho capito bene hai messo la finestra dentro il pulsante nello stato sopra, non è un modo corretto di procedere, la finestra devi lasciarla in libreria e richiamarla sullo stage al rollover.

  3. #3
    grazie randi,
    ma come faccio a fare il clip filmato solo nella libreria?
    creo il clip su un livello, e poi lo cancello dallo stage?

    saresti così gentile da spiegarmi come richiamare il clip sul rollover del pulsante?
    devo fare tipo un gotoandPlay col nome dell'istanza del clip?

  4. #4
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Meglio se invece di usare i Pulsanti fai tutto con i MovieClip che sono più gestibili e più potenti.
    Potresti mettere le finestre su un livello superiore, settarle su .visible = false e richiamarle al MouseOver (risettarle su visible = false al MouseOut).

    Esempio per un puntino (MC) sul livello 1 e finestra sul livello 2:

    Codice PHP:
    finestra_1.visible false;
    pulsante_1.buttonMode true;

    pulsante_1.addEventListener(MouseEvent.MOUSE_OVERapriFinestra);
    pulsante_1.addEventListener(MouseEvent.MOUSE_OUTchiudiFinestra);

    function 
    apriFinestra(evento:MouseEvent):void
    {
        
    finestra_1.visible true
    }
    function 
    chiudiFinestra(evento:MouseEvent):void
    {
        
    finestra_1.visible false

    Se hai molti puntini e rispettive finestre, invece di scrivere tutto questo codice per ogni singolo elemento (puntino e rispettiva finestra) si può ottimizzare con gli Array e un ciclo for:
    Codice PHP:
    var pulsanti:Array = new Array(pulsante_1pulsante_2)
    var 
    finestre:Array = new Array(finestra_1finestra_2)

    inizializza()
    function 
    inizializza():void
    {
        for(var 
    i:uint 0pulsanti.length++)
        {
            
    finestre[i].visible false
            pulsanti
    [i].buttonMode true;
            
    pulsanti[i].addEventListener(MouseEvent.MOUSE_OVERidentificaOpen)
            
    pulsanti[i].addEventListener(MouseEvent.MOUSE_OUTidentificaClose)
        }
    }
    function 
    identificaOpen(evento:MouseEvent):void
    {
        
    apriFinestra(evento.target)
    }
    function 
    identificaClose(evento:MouseEvent):void
    {
        
    chiudiFinestra(evento.target)
    }
    function 
    apriFinestra(bottone:*):void
    {
        var 
    id:int pulsanti.indexOf(bottone);
        
    finestre[id].visible true
    }
    function 
    chiudiFinestra(bottone:*):void
    {
        var 
    id:int pulsanti.indexOf(bottone);
        
    finestre[id].visible false

    In questo secondo esempio ti basta aggiungere i nomi di puntini e finestre negli Array e nel campo <Nome Istanza> dei MC, tutti gli elementi si comporteranno allo stesso modo e le rispettive finestre saranno visibili sul livello superiore solo al mouseOver.

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Olbia
    Messaggi
    2,930
    I Flash si può arrivare allo stesso risultato finale seguendo strade diverse, uno è quello che ti prospetta Il mio amico Sleter dove però se ho capito il problema dovrai gestire i livelli, uno è quello che suggerivo io, per rispondere alla tua domanda: si, crei un moviclip sullo stage e poi lo cancelli, molto importante devi fare tasto destro sul clip in libreria selezionare Proprietà e spuntare esporta per actionscript, in questo caso siccome un clip caricato dalla libreria si posiziona automaticamente sul livello più alto non hai bisogno d'altro.
    esempio

  6. #6
    Originariamente inviato da randi
    I Flash si può arrivare allo stesso risultato finale seguendo strade diverse, uno è quello che ti prospetta Il mio amico Sleter dove però se ho capito il problema dovrai gestire i livelli, uno è quello che suggerivo io, per rispondere alla tua domanda: si, crei un moviclip sullo stage e poi lo cancelli, molto importante devi fare tasto destro sul clip in libreria selezionare Proprietà e spuntare esporta per actionscript, in questo caso siccome un clip caricato dalla libreria si posiziona automaticamente sul livello più alto non hai bisogno d'altro.
    esempio

    Grazie mille ragazzi,
    sto provando seguendo le vostre indicazioni, ma ho qualche problema nel funzionamento...
    Questo è il codice:

    codice:
    import flash.events.MouseEvent; var china1= new window_china1
    
    china1.addEventListener(MouseEvent.MOUSE_OVER, open_china1)  
    
    function open_china1(evt:MouseEvent):void{ 	
    
    addChild(wind_china1) 	wind_china1.x=170 	wind_china1.y=105 }
    
     //***************************************************************** 
    
    china1.addEventListener(MouseEvent.MOUSE_OUT, close_china1)  
    
    function close_china1(evt:MouseEvent):void{ 	
    
    removeChild(wind_china1) }
    open_china1 = questo è il nome della function? giusto? (o devo richiamare qualcosa?)
    window_china1 = questo non ho capito cos'è... posso dargli un nome a caso o deve richiamare qualcosa?
    wind_china1 = questo deve essere il nome dell'istanza del movieclip della finestra giusto?
    china1 = questo deve richiamare il pulsante? giusto?


    quando esporto mi da una serie di errori:

    Scena 1, livello 'Actions', fotogramma 32, riga 6 1067:
    Assegnazione forzata implicita di un valore del tipo Class a un tipo flash.display: DisplayObject non correlato.

    Scena 1, livello 'Actions', fotogramma 32, riga 7 1119:
    Accesso a una proprietà non definita x mediante un riferimento con tipo statico Class.

    Scena 1, livello 'Actions', fotogramma 32, riga 2 1180:
    Chiamata al metodo non definito window_china1.

    Quando ho salvato il movieclip, ho fatto come mi hai detto: nel proprietà ho ceccato (esporta per action script), però mi è apparso un popup: impossibile trovare una definizione per questa classe nel percorso classe.
    Potrebbe essere una della cause dei problemi?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Olbia
    Messaggi
    2,930
    Se istanzi così
    codice:
    var china1= new window_china1
    addChild dovrà essere
    codice:
    addChild(china1)
    e non addChild(wind_china1)
    wind_china1 è il nome del mc in libreria, ricordati esporta per actionscript, ti ho fatto un esempio non lo hai scaricato?

  8. #8
    Sì, ho scaricato il fla, infatti ho copiato il tuo codice provando di modificare le istanze.
    Ma non conoscendo bene il codice, non riesco a capire dove devo posizionare le istanze nella stringa di codice.

    codice:
    import flash.events.MouseEvent;
    var china1= new window_china1
    china1.addEventListener(MouseEvent.MOUSE_OVER, open_china1)
    
    function open_china1(evt:MouseEvent):void{
    	addChild(china1)
    	china1.x=170
    	china1.y=105
    }
    //*****************************************************************
    china1.addEventListener(MouseEvent.MOUSE_OUT, close_china1)
    
    function close_china1(evt:MouseEvent):void{
    	removeChild(china1)
    }
    allora le mie istanze sono:
    wind_china1=movieclip
    china1=pulsante

    dove devo posizionarle affinchè funzioni e che non vada in conflitto con altre?

    p.s dopo avere aggiunto questo codice, mi si è rotto quello che avevo inserito prima.
    nell'ultimo frame avevo:
    codice:
    import flash.display.MovieClip;
    this.gotoAndPlay(32);
    dove devo inserire il codice per i pulsanti? all'inizio della timeline nel livello actions?

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Olbia
    Messaggi
    2,930
    Allora il movieclip in libreria si chiama wind_china1, ci fai tasto destro proprietà e spunti per actionscript. Lo istanzi var china1= new wind_china1, il pulsante non lo puoi chiamare china1 perchè questo nome lo hai già usato per istanziare il clip, puoi chiamarlo ad esempio btn_china1, il resto mi sembra corretto.

  10. #10
    Grazie, sembra funzionare.
    L'unica cosa che non funziona è il mouse out, la finestra non scompare.
    Potrebbe essere collegato al fatto che nel clip filmato ho un'animazione con un stop sull'ultimo frame?
    In tal caso come potrei fare?

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.