Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Movieclip e Bottoni

  1. #1

    Movieclip e Bottoni

    Ciao a tutti.
    Ho iniziato ad usare AC3 e fino a quando si trattava di gestire oggetti sullo stage tutto bene.
    Adesso ho un problema.

    Sullo stage ho un movieclip che contiene al frame 5 un bottone.
    Quando faccio partine l'animazione con il ctrl+Invio mi da errore.

    La domanda è questa:

    Quel bottone come faccio a controllarlo da codice? (uso file esterno .as)
    Mi spiego meglio: come faccio ad aggiungere il listener a quel bottone per poter controllare gli eventi legati ad esso?

    E' possibile?

    O tutto deve essere sullo stage?

    Grazie mille

  2. #2
    Ciao praezision.

    Non sono davanti al mio pc quindi non posso testare ciò che ti scrivo comunque se vuoi aggiungere un listener nel pulsante dovresti poter scrivere del codice (in questo caso lo scriveresti nel primo fotogramma dello stage) di questo tipo:
    Codice PHP:
    movieclip.pulsante.addEventListener(bla bla); 
    Attenzione che se il tuo progetto era in AS2, hai aggiunto del codice sul sul pulsante stesso e poi hai cambiato il progetto in AS3 il codice scritto sul pulsante è errato e non accettato da flash quindi puoi lavorare solo sui frame (questo potrebbe essere il motivo per il quale ti risulta un errore all'esecuzione del filmato).

    Infine, visto che il codice che ti ho scritto non l'ho testato per un movieclip che contenga qualcosa non nel primo frame (nel tuo caso è il 5°) ti consiglio di inserire direttamente nel 5° fotogramma del movieclip (quindi nel fotogramma chiave ove è presente il pulsante) il codice seguente (ovviamente relativo ai nomi delle tue istanze):
    Codice PHP:
    pulsante.addEventListener(<evento>,<funzione>);
    /*attento che come l'ho scritto qui sopra <funzione> credo
    debba essere definito nello stesso frame (anche in un lauer dedicato)*/ 
    Eventualmente puoi pacioccare provando la prima parte di codice che ti ho proposto.
    Perdonami ma non essendo davanti al mio pc non riesco a testare ciò che farei
    Quando tornerò sulla mia postazione vedrò di provare e eventualmente aggiornerò il post.

    Spero di esserti stato utile un po'.

    Ciao
    My site: www.andreaciani.com

  3. #3
    Ciao

    Adesso provo però rimango un po' deluso.
    Avevo capito che con questo fantomatico file esterno .as si sarebbe riusciti a "pilotare" tutto ciò che fosse stato nel filmato flash (indipendentemente da dove si trovasse).

    Mi sembrava bello il fatto di non avere più codice spruzzato qua e la.

    Devo ricredermi allora?

    O forse sbaglio io l'approccio.

    Ti metto in dettaglio la cosa:
    sullo stage c'è un movie clip 'sottomenu' che contiene al frame 5 un bottone 'info'.
    A quel frame ci si arriva quando si fa click su un bottone sullo stage che come codice ha il classico gotoAndStop(5).
    A quel punto cliccando su info vorrei far apparire delle informazioni.

    Io non riesco a legare il listener al bottone 'info'.

    Spero di essere stato più chiaro, ripetendo che mi sarebbe piaciuto tenere tutto il codice dentro il file .as.

    Per adesso grazie mille!

  4. #4
    Ciao, allora il file .as si può creare ma ora come ora non ricordo bene la scrittura corretta per poter la definizione del tutto e per l'importazione

    (se non sbaglio devi scriverti una classe che estenda la libreria dedicata ai movieclip un package nuovo non necessita. Dopo ti definisci le variabili che ti porterai e le funzioni/metodi di utilizzo delle variabili. Se guardi nell'help di flash trovi già qualcosa a riguardo visto che ci sono un sacco di esempi che usano delle classi personalizzate; basta poi inserirle in un file .as posizionato nella stessa cartella del fla per comodità e poi se non sbaglio dovresti nel fotogramma scrivere una cosa tipo
    Codice PHP:
    #include "funzioni.as" 
    , non ricordo se per AS3 si usa un altro modo).

    Comunque sia ti dico + o - ciò che dovresti scrivere nel primo fotogramma dello stage:
    Codice PHP:
    <pulsante_di_partenza>.addEventListener(MouseEvent.CLICK,sposta_fotogrammi);

    function 
    sposta_fotogrammi(event:MouseEvent):void {
        
    sottomenu.gotoAndStop(5);
        
    sottomenu.info.addEventListener(MouseEvent.CLICK,visualizza_info);
    }
    function 
    visualizza_info(event:MouseEvent):void {
        
    trace("ecco il messaggio o altre istruzioni");
        
    sottomenu.info.removeEventListener(MouseEvent.CLICK,visualizza_info);
        
    //tale removeEventListener serve per risparmiare la gestione della memoria

    Prova questo codice, dovrebbe funzionare.
    Dimmi se ti va.
    P.s.: sappiamo entrambi che è sempre meglio controllare il tutto da un file .as, più che altro il meglio sarebbe usare il .as per le funzioni il controllo dei contenuti e un file .txt con all'interno le variabili usate come valori dei contenuti come ad esempio i testi delle textfield, il numero dei menu, dei sottomenu, le path di eventuali immagini caricate dinamicamente nel tuo filmato.

    Ciao ciao.
    My site: www.andreaciani.com

  5. #5
    Eccomi!
    Prima di tutto grazie!

    Ho provato il tuo primo codice e funziona, cioè il listener lo inizializzo sul frame 5.
    Otimmo!
    Peccato per il file .as esterno che non conterrà più quel pezzo di codice.

    Per quanto riguarda la costruzione del .as ci sono, ho capito come fare ma grazie comunque dell'indicazione.

    Adesso provo il tuo secondo codice.

    Non mi capacito di come nessuno si sia imbattuto in problemi simili.

  6. #6
    Grande!!

    Funziona perfettamente!
    Grazie mille

    Quindi bisogna creare gli oggetti nei punti in cui la linea temporale raggiunge l'oggetto da istanziare.

    Dario

  7. #7
    Figurati!
    Quindi bisogna creare gli oggetti nei punti in cui la linea temporale raggiunge l'oggetto da istanziare.
    Per questo non ho fatto una prova ma lo provi immediatamente invertendo l'ordine delle istruzioni (sperando di aver capito cosa intendevi )
    Codice PHP:
    sottomenu.gotoAndStop(5);
    sottomenu.info.addEventListener(MouseEvent.CLICK,visualizza_info); 
    Se funziona un pensiero in meno.

    Ciao ciao e alla prossima!

    My site: www.andreaciani.com

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.