• User

    Collegamento pulsanti a movieclip e funzione per controllare animazioni.

    Ciao a tutti!
    Ho bisogno del vostro aiuto se possibile!

    😢Problema 1: ho un file .fla contenente vari movieclip.
    Ogni movieclip è animato attraverso la timeline.
    Devo collegare il pulsante che si trova in un movieclip A
    a un movieclip B o un movieclip C a random, ovvero
    cliccando sul pulsante del movieclip A a volte si arriva
    al movieclip B e altre volte si arriva al movieclip C.

    😢Problema 2: ho un movieclip (strada) animato tramite la timeline.
    L'animazione consiste nel passaggio di automobili da un lato all'altro
    dello stage (tramite interpolazione di movimento).
    Devo mettere un semaforo che quando diventa verde provoca
    lo stop delle automobili prima delle strisce pedonali (disegnate
    nel background dello stage). (Nello stato del semaforo rosso invece le
    automobili continuano a circolare liberamente).

    😢Problema 3: ho un pulsante nel movieclip strada. Devo far sì che quando viene premuto se il semaforo è rosso mi porta a un altro movieclip (mc2),
    se è verde a un altro movieclip ancora (mc3).

    Vi prego aiutatemi!!
    Grazie mille!!:)


  • Super User

    Ciao melaniaflash, quante cose tutte in una volta forse era meglio aprire più discussioni.
    Per il problema numero 1 potresti caricare in modo random i clip dalla libreria con questo

    
    var myArray = new Array();
    myArray = ["obj1", "obj2"];
     btn.onPress = function(){
    objRandom = Math.floor(Math.random()*2);
    trace(objRandom);
    _root.shimContainer.attachMovie(myArray[objRandom], shim, 1);
    }
    
    

    shimContainer è il nome istanza di un clip vuoto sullo stage.
    Per quanto riguarda lo stop a seconda del semaforo penso si potrebbe fare con una condizione if, se come credo il semaforo cambia colore passando da un frame 1 rosso al frame 2 verde si potrebbe fare

    
     if(mc_semaforo._currenframe==2)
    {
    mc_auto.stop()
    }
    }else{play()
    }
    
    

    per il terzo problema sempre con l'uso della condizione if(condizione){fai questo}}else{fai questaltro


  • User

    Ciao Nhatan!
    Grazie per la risposta. 😉
    Ho appena provato il codice per gestire la visualizzazione
    dei movieclip a random, ma purtroppo non funziona.
    Probabilmente sbaglio qualcosa, ora ci riproverò.
    Di sicuro, però, è sbagliato scrivere "_root"
    in quanto AS3 non lo riconosce, ma lo ha in qualche modo
    sostuito con la parola chiave "stage".
    Poi volevo chiederti: "shimContainer", nel .fla, dove devo posizionarlo?
    Nel primo fotogramma dei due movieclip che voglio visualizzare a random,
    o nel primo fotogramma di tutto il file .fla?
    Grazie mille per l'aiuto!


  • Super User

    Non avevi specificato la versione del linguaggio, quello script è in as2, chiaro che non ti funziona.


  • Super User

    Questo invece è as3 mettilo dentro la funzione.

    
    var mc:Array= new Array();
    mc[0]= new mc1();
    mc[1]= new mc2();
    var drawNum = Math.round(Math.random() * 1);
    addChild(mc[drawNum]);
    (mc[drawNum]).y=200,(mc[drawNum]).x=300;
    
    

  • User

    Ciao! Grazie ancora per la tua disponibilità.
    Scusami se ho omesso di precisare che era AS3, probabilmente
    mi è sfuggito!
    Comunque anche con l'AS3 che hai scritto non va.

    Questo è il mio script AS:

    package
    {
    import flash.display.MovieClip;
    import flash.events.MouseEvent;

    public class Attraversare extends MovieClip
    {
        var startPage:StartPage;
        var giocoPage:GiocoPage;
        var rossoPage:RossoPage;
        var verdePage:VerdePage;
        var attraversaRossoPage:AttraversaRossoPage;
        var attraversaVerdePage:AttraversaVerdePage;
        var ambulanzaPage:AmbulanzaPage;
        var benePage:BenePage;
        
        
        public function Attraversare()
        {
            
            startPage = new StartPage();
            giocoPage = new GiocoPage();
            attraversaRossoPage = new AttraversaRossoPage();
            attraversaVerdePage = new AttraversaVerdePage();
            ambulanzaPage = new AmbulanzaPage();
            benePage = new BenePage();
            
            addChild(startPage);
            
            startPage.startPulsante.addEventListener(MouseEvent.CLICK, onStartPulsanteClick);
            giocoPage.goPulsante.addEventListener(MouseEvent.CLICK, onGoPulsanteClick);
            rossoPage.stradinaRossoPulsante.addEventListener(MouseEvent.CLICK, onStradinaRossoPulsanteClick);
            verdePage.stradinaVerdePulsante.addEventListener(MouseEvent.CLICK, onStradinaVerdePulsanteClick);
            ambulanzaPage.giocaAncoraDaAmbulanzaPulsante.addEventListener(MouseEvent.CLICK, onGiocaAncoraDaAmbulanzaPulsanteClick);
            benePage.giocaAncoraDaBenePulsante.addEventListener(MouseEvent.CLICK, onGiocaAncoraDaBenePulsanteClick);
            
        }
        
        function onStartPulsanteClick (event:MouseEvent):void
        {
            addChild(giocoPage);
            removeChild(startPage);
        }
        
        function onGoPulsanteClick (event:MouseEvent):void
        {
            //FUNZIONE PER RANDOM
        }
        
        function onStradinaRossoPulsanteClick (event:MouseEvent):void
        {
            addChild(attraversaRossoPage);
            removeChild(rossoPage);
        }
        
        function onStradinaVerdePulsanteClick (event:MouseEvent):void
        {
            addChild(attraversaVerdePage);
            removeChild(verdePage);
        }
        
        function onGiocaAncoraDaAmbulanzaPulsanteClick (event:MouseEvent):void
        {
            addChild(giocoPage);
            removeChild(ambulanzaPage);
        }
        
        function onGiocaAncoraDaBenePulsanteClick (event:MouseEvent):void
        {
            addChild(giocoPage);
            removeChild(benePage);
        }
        
    }
    

    }

    Le variabili rossoPage e verdePage contengono i movieclip che voglio visualizzare a random. La funzione per gestire il random deve partire da onGoPulsanteClick.

    Avevo provato a inserire tutto il codice che mi hai scritto nella
    function onGoPulsanteClick.

    Il compilatore mi mostra gli errori:
    1180: Chiamata al metodo non definito mc1.
    1120: Accesso alla proprietà non definita mc.
    1120: Accesso alla proprietà non definita drawNum.

    Dove sbaglio?
    Grazie ancora!


  • Super User

    Quel codice così com'è funziona se lo metti sulla time line se lo metti nella document class, non funziona , ma se quello script lo hai fatto tu, e quindi non mi vergogno a riconoscere che sei molto più brava di me, dovresti saperlo.


  • User

    Si lo script l'ho fatto io dopo aver letto un po' di libri americani sul game design con flash e game programming con AS3..ma sono solo all'inizio della messa in pratica e alcuni concetti lio ho letti, ma non li ho ancora assimilati bene. Procedo per gradi e spesso mi trovo dinanzi a problemi che non so risolvere!
    Pensavo di fare tutto tramite lo script e non aggiungere niente tramite la timeline, ma a questo punto farò così..sperando che vada!
    Ti ringrazio davvero tantissimo!
    A risentirci!