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

    [AS3] Prototipo, cilclo for o altro?

    Ciao, ho 12 pulsanti in un mc "showbox" sullo sullo stage, i quali eseguono tutti lo stesso richiamo, se non che l'unica differenza tra un pulsante e l'altro, è che richiamano un file con il numero finale diverso es:
    Codice PHP:
    var fswrm01:MovieClip=fswrm01;
    showbox.fswrm01.buttonMode=true;
    showbox.fswrm01.mouseChildren=true;
    showbox.fswrm01.addEventListener(MouseEvent.MOUSE_OVER,over01);
    showbox.fswrm01.addEventListener(MouseEvent.MOUSE_OUT,out01);
    showbox.fswrm01.addEventListener(MouseEvent.MOUSE_UP,up01);

    function 
    up01(event:MouseEvent) {
        
    ExternalInterface.call("fswrm01");
        
    //trace("- apri fswrm");
    }
    function 
    over01(event:MouseEvent) {
        
    //codice 
    }
    function 
    out01(event:MouseEvent) {
        
    //codice 

    quindi l'unica differenza va da "fswrm01 a fswrm12"
    posso realizzare un qualcosa di unico che mi faccia funzionare tutti i pulsanti, o devo per ogni pulsante riscrivere tutto il codice?
    Grazie a tutti!!!
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Partiamo dal presupposto che i pulsanti all'interno del clip principale siano anch'essi movieclip.
    La classe MovieClip nel core di Flash è definita come dynamic e quindi può ricevere variabili create a runtime senza creare errori (cosa invece da escludere per simplebutton, sprite, shape ecc...).
    Perciò partendo da quel presupposto, possiamo passare una variabile "filmato" ad ogni pulsante e sfruttarla all'interno della funzione usando la proprietà target del parametro "event" passato alla funzione.

    Codice PHP:
    for (var i:uint=1i<=5i++) {
        var 
    fswrm:MovieClip showbox["fswrm0"+i] as MovieClip;
        
    fswrm.filmato "fswrm0"+i;
        
    fswrm.buttonMode true;
        
    fswrm.mouseChildren true;
        
    fswrm.addEventListener(MouseEvent.ROLL_OVERmouseevents);
        
    fswrm.addEventListener(MouseEvent.ROLL_OUTmouseevents);
        
    fswrm.addEventListener(MouseEvent.CLICKmouseevents);
    }
    function 
    mouseevents (evt:MouseEvent):void {
        if (
    evt.type == MouseEvent.CLICK) {
            
    ExternalInterface.call(evt.target.filmato);
            
    // trace ("- apri fswrm");
        
    } else if (evt.type == MouseEvent.ROLL_OVER) {
            
    // codice rollover
        
    } else if (evt.type == MouseEvent.ROLL_OUT) {
            
    // codice rollout
        
    }


  3. #3
    ok funziona tutto per la chiamata al click ok!!
    ora come richiamare diversi TweenMax?
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  4. #4
    ho provato così
    Codice PHP:
    for (var i:uint=1i<=12i++) {
        var 
    fswrm:MovieClip=showbox["fswrm"+i] as MovieClip;
        
    fswrm.filmato="fswrm"+i;
        
    fswrm.buttonMode=true;
        
    fswrm.mouseChildren=true;
        
    fswrm.addEventListener(MouseEvent.ROLL_OVER,mouseevents);
        
    fswrm.addEventListener(MouseEvent.ROLL_OUT,mouseevents);
        
    fswrm.addEventListener(MouseEvent.CLICK,mouseevents);
    }
    function 
    mouseevents(evt:MouseEvent):void {
        if (
    evt.type==MouseEvent.CLICK) {
            
    ExternalInterface.call(evt.target.filmato);
            
    trace(evt.target.filmato);
        } else if (
    evt.type == MouseEvent.ROLL_OVER) {
            
    TweenMax.to(showbox.fswrm1.copfsu0.3,{y:-94});
            
    TweenMax.to(showbox.fswrm1.copfgiu0.3,{y:63});
        } else if (
    evt.type == MouseEvent.ROLL_OUT) {
            
    TweenMax.to(showbox.fswrm1.copfsu0.3,{y:-49});
            
    TweenMax.to(showbox.fswrm1.copfgiu0.3,{y:14});
        } 

    e funziona bene per il primo pulsante "fswrm1"come estenderlo a tutti gli altri 11?

    altra cosa strana, per tutti i pulsanti, se faccio un trace(evt.target.filmato) mi restituiscono il valore relativo, mentre per il primo mi da undefined, come mai?
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  5. #5
    per ultimo, è possibile integrare il caricamento dell'immagine di sfondo di ogni pulsante in un mc che si trova al suo interno?
    le immagini sarebbero "p1.jpg, p2.jpg, p3.jpg" ecc ecc...
    o meglio farlo a parte?
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Se provi a leggere e comprendere il codice, hai già la risposta, comunque:
    Codice PHP:
    for (var i:uint=1i<=12i++) {
        var 
    fswrm:MovieClip=showbox["fswrm"+i] as MovieClip;
        
    fswrm.filmato="fswrm"+i;
        
    fswrm.buttonMode=true;
        
    fswrm.mouseChildren=true;
        
    fswrm.addEventListener(MouseEvent.ROLL_OVER,mouseevents);
        
    fswrm.addEventListener(MouseEvent.ROLL_OUT,mouseevents);
        
    fswrm.addEventListener(MouseEvent.CLICK,mouseevents);
    }
    function 
    mouseevents(evt:MouseEvent):void {
        if (
    evt.type==MouseEvent.CLICK) {
            
    ExternalInterface.call(evt.target.filmato);
            
    trace(evt.target.filmato);
        } else if (
    evt.type == MouseEvent.ROLL_OVER) {
            
    TweenMax.to(evt.target["copfsu"], 0.3,{y:-94});
            
    TweenMax.to(evt.target["copfgiu"], 0.3,{y:63});
        } else if (
    evt.type == MouseEvent.ROLL_OUT) {
            
    TweenMax.to(evt.target["copfsu"], 0.3,{y:-49});
            
    TweenMax.to(evt.target["copfgiu"], 0.3,{y:14});
        }


  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da zeropunto
    per ultimo, è possibile integrare il caricamento dell'immagine di sfondo di ogni pulsante in un mc che si trova al suo interno?
    le immagini sarebbero "p1.jpg, p2.jpg, p3.jpg" ecc ecc...
    o meglio farlo a parte?
    Non ho compreso la domanda

  8. #8
    ecco qual'era l'arcano mistero dell'errore che mi dava.... io scrivevo evt.target.copfsu e mi dava errore, ora provo come hai scritto tu, grazie!

    Per la seconda domanda, quella poco chiara, intendevo, ogni pulsante avrà un'immagine di sfondo diversa, che verrà caricata dall'esterno, è possibile farla cariare direttamente in questo ciclo for, o va fatto separatamente?
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Ah no, lo puoi fare nello stesso ciclo, ma fai in modo che ci sia un clip vuoto nella posizione in cui si deve trovare l'immagine di sfondo (e che abbia la profondità giusta), gli dai un nome generico "canvas", e nel ciclo modifichi in questo modo.

    codice:
    for (var i:uint=1; i<=12; i++) {
        var fswrm:MovieClip=showbox["fswrm"+i] as MovieClip;
    	fswrm.loader = fswrm.canvas.addChild(new Loader()) as Loader;
    	fswrm.loader.load(new URLRequest("p"+i+".jpg"));
        fswrm.filmato="fswrm"+i;
        fswrm.buttonMode=true;
        fswrm.mouseChildren=true;
        fswrm.addEventListener(MouseEvent.ROLL_OVER,mouseevents);
        fswrm.addEventListener(MouseEvent.ROLL_OUT,mouseevents);
        fswrm.addEventListener(MouseEvent.CLICK,mouseevents);
    }

  10. #10
    ciao, provato e funziona!! ..però c'è un piccolo problema nei pulsanti, al click mi da il seguente errore:
    ReferenceError: Error #1069: Impossibile trovare la proprietà filmato su flash.display.Loader e nessun valore predefinito presente.
    at main_fla::MainTimeline/mouseevents()


    questo il codice utilizzato:
    Codice PHP:
    for (var i:uint=1i<=12i++) {
        var 
    fswrm:MovieClip=showbox["fswrm"+i] as MovieClip;
        
    //carico le immagini di sfondo dei pulsanti
        
    fswrm.loader fswrm.foto.addChild(new Loader()) as Loader;
        
    fswrm.loader.load(new URLRequest("../immagini/showroom/fswrm"+i+"-th.jpg"));
        
    //imposto i parametri per i pulsanti
        
    fswrm.filmato="fswrm"+i;
        
    fswrm.buttonMode=true;
        
    fswrm.mouseChildren=true;
        
    fswrm.addEventListener(MouseEvent.ROLL_OVER,mouseevents);
        
    fswrm.addEventListener(MouseEvent.ROLL_OUT,mouseevents);
        
    fswrm.addEventListener(MouseEvent.CLICK,mouseevents);
    }
    function 
    mouseevents(evt:MouseEvent):void {
        if (
    evt.type==MouseEvent.CLICK) {
            
    ExternalInterface.call(evt.target.filmato);
            
    trace(evt.target.filmato);
        } else if (
    evt.type == MouseEvent.ROLL_OVER) {
            
    TweenMax.to(evt.target["copfsu"], 0.3,{y:-94});
            
    TweenMax.to(evt.target["copfgiu"], 0.3,{y:63});
        } else if (
    evt.type == MouseEvent.ROLL_OUT) {
            
    TweenMax.to(evt.target["copfsu"], 0.3,{y:-49});
            
    TweenMax.to(evt.target["copfgiu"], 0.3,{y:14});
        }

    Da cosa può dipendere?
    Incredibile, quanto a volte ci si impegola in qualcosa che sembra impossibile..
    e poi si scopre che quel che si dava per scontato, perchè banale, ne fosse la soluzione..

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.