Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275

    muovere oggetto attraverso punti

    Salve a tutti,
    sul mio stage ho 6 punti, diciamo un computer, un frigo, una tastiera...
    ora, il personaggio deve muoversi attraverso tutti i percorsi
    tastiera ---> frigo e viceversa, computer--->tastiera e viceversa, etc
    e fare azioni diverse a seconda di dove si trova (accendere la tv, digitare sul pc...)

    ho trovato questo esempio
    http://www.benoitfreslon.com/actions...with-smoothing
    ma non va bene perché i punti non sono indefiniti, ma sono 6 e si trovano in coordinate precise
    per adesso ho fatto diversi mc, uno che va dal frigo al computer, uno dal computer al frigo, uno dalla tastiera al frigo, etc
    ma mi sto incasinando tantissimo
    esiste un modo "ordinato" e semplice via as3?
    grazie!

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

    Potresti creare un area (MC) anche trasparente in modo da poter chiamare una funzione quando il personaggio si trova all'interno del MC "area".

    Codice PHP:
    stage.addEventListener(KeyboardEvent.KEY_DOWNclipStart);

    function 
    clipStart(evento:KeyboardEvent):void
    {
        if (
    evento.keyCode == 39)
        {
            
    clip.x++;
        }
        if (
    clip.hitTestObject(area))
        {
            
    trace("SI area");
        }
        else
        {
            
    trace("NO area");
        }

    In questo esempio ho un MC "clip" che si sposta premendo il tasto freccia DX e che viene intercettato quando tocca il MC: "area" con il metodo hitTestObject.


    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    grazie
    alla fine ho risolto con le transition

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    ora però ho un altro problema
    se clicco su "telaio", l'oggetto deve muoversi a seconda dell'ultima posizione in cui si trova, per esempio, se è vicino al frigo dovrà fare un tipo di movimento, se sta vicino alla tastiera un altro
    allora ho pensato di fare così
    cliccando sul telaio, se il computer è visibile, farà un movimento, se still_left si trova a quella certa x dovrà fare invece un altro movimento
    solo che non funziona, nel senso che se clicco sul computer, e poi sul telaio, elda riparte sempre da x==490 (come se fosse elda_still_left.x==490)
    dove sbaglio?
    ecco il codice

    codice:
    telaio.addEventListener( MouseEvent.CLICK, goto_telaio );
    function goto_telaio(e:MouseEvent):void
    {   
    		if(elda_sits_computer.visible==true) {
    		elda_still_right.x=328;
    		elda_still_right.y=410;		
    		elda_still_right.visible=true;
    		elda_sits_computer.visible=false;
    		eldona_walking_back.visible=false;
    		Tweener.addTween(elda_still_right, {time: 2 });
    		}	
    		
    		if (elda_still_left.x==490) {
    			elda_still_right.visible=false;
    		eldona_walking_back.visible=true;
    		eldona_walking_back.x=490;
    		eldona_walking_back.y=620;		
    		elda_sits_computer.visible=false;
    		Tweener.addTween(eldona_walking_back, {x:829, y:400, time: 2 });
    		elda_still_left.visible=false;
    		}
    grazie!

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    salve a tutti,
    diciamo che ho quasi risolto, ora ho un problema con la posizione x e y in seguito a un if
    ecco lo scenario:
    il personaggio parte dal centro e deve spostarsi fino a raggiungere "computer", "fridge" e "telaio", ovviamente dopo il clic sui rispettivi oggetti
    se clicco centro ---> computer ---> telaio tutto ok
    se invece clicco centro ---> fridge ---> computer ---> telaio, il personaggio invece di partire da computer per raggiungere telaio, va a posizionarsi prima su fridge e poi si sposta su telaio
    in pratica invece di restare su x=328 va su x=208 e poi si muove verso il telaio

    ecco il codice di telaio

    codice:
    //SILKSCREEN
    
    
    telaio.addEventListener( MouseEvent.CLICK, computer_telaio );
    function computer_telaio(e:MouseEvent):void
    {   
    		if(elda_sits_computer.visible==true && elda_still_left.visible==false) {
    			
    		elda_still_right.x=328;
    		elda_still_right.y=410;		
    		elda_still_right.visible=true;
    		elda_sits_computer.visible=false;
    		eldona_walking_right.visible=false;
    		elda_still_left.visible=false;	
    		Tweener.addTween(elda_still_right, {time: 2, onComplete: goto_screen });
    		
    		}
    				
    		if (elda_still_left.x==208 && elda_sits_computer.visible==false) {
    		elda_still_right.x=208;
    		elda_still_right.y=454;
    		elda_still_left.visible=false;	
    		elda_still_right.visible=true;
    		telaio.mouseEnabled = false;
    		Tweener.addTween(elda_still_right, {time: 2, onComplete: goto_screen});
    		
    		}
    forse il fatto è che il codice che sposta da fridge a computer ha lo stesso if?
    questo è il codice


    codice:
    //COMPUTER
    
    
    computer.addEventListener( MouseEvent.CLICK, telaio_computer );
    function telaio_computer(e:MouseEvent):void
    {   
    		if(elda_screenprinting.visible==true) {
    		elda_still_left.x=829;
    		elda_still_left.y=410;		
    		elda_still_left.visible=true;
    		elda_sits_computer.visible=false;
    		eldona_walking_back.visible=false;
    		elda_screenprinting.visible=false;
    		telaio_up2.visible=true;
    		telaio.mouseEnabled = false;
    		Tweener.addTween(elda_still_left, {time: 2, onComplete: go_telaio_computer});
    			
    		}	
    		
    
    		if(elda_still_left.x==208) {
    		elda_still_right.x=208;
    		elda_still_right.y=454;
    		elda_still_left.visible=false;	
    		elda_still_right.visible=true;
    		telaio.mouseEnabled = false;
    		Tweener.addTween(elda_still_right, {time: 2, onComplete: go_fridge_computer});
    	
    		}
    dove if(elda_still_left.x==208) si ripete
    le due funzioni hanno nome diverso, non dovrebbe bastare questo?
    altrimenti si dovrebbe forse dire "if x==208 e clicchi su telaio fai questo" e "if x==208 e clicchi su computer fai un'altra cosa"

    per completezza, questo è il codice che sposta il personaggio dal centro al fridge

    codice:
    //FRIDGE FROM CENTER
    fridge.addEventListener( MouseEvent.CLICK, center_fridge );
    function center_fridge(e:MouseEvent):void
    {
    	if(elda_still_left.x==490 && elda_sits_computer.visible==false) {
    	eldona_walking_left.visible = true;
    	eldona_walking_left.x=490;
    	eldona_walking_left.y=620;
    	elda_still_left.visible = false;
    	elda_still_right.visible = false;
    	Tweener.addTween(eldona_walking_left, {x:208, y: 454, time: 4, onComplete: elda_ferma});
    	computer.mouseEnabled = false;
    	telaio.mouseEnabled = false;
    	
    		computer.removeEventListener( MouseEvent.CLICK, center_computer );
    		fridge.removeEventListener( MouseEvent.CLICK, center_fridge );
    		telaio.removeEventListener( MouseEvent.CLICK, center_telaio );
    
    }
    grazie!

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.