Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    33

    hitTest solo con onRelease

    Salve ragazzi.
    Ho un file flash as3 in cui sposto un mc sul desktop e voglio che se urta un altro oggetto si fermi su di esso.
    Col mio script riesco a farlo, però il mc si ferma sull'oggetto anche se ho ancora il mouse in posizione DOWN, mentre voglio che ciò accada solamente quando rilascio il pulsante (col vecchio as2 era semplicissimo usare on release ...)
    Qualcuno mi dice dove intervenire per far sì che lo stopdrag parta solo al rilascio del pulsante del mouse ?

    Saluti



    circle_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);
    circle_mc.addEventListener(MouseEvent.MOUSE_UP, statt);

    function drag(e:MouseEvent):void
    {
    circle_mc.startDrag();
    }

    function statt (e:MouseEvent) :void
    {
    circle_mc.stopDrag();
    circle_mc.x = 581,50;
    circle_mc.y = 416,7;
    }

    import flash.events.Event;

    this.addEventListener( Event.ENTER_FRAME, collision)

    function collision( e:Event ):void
    {

    if(circle_mc.hitTestObject(sotto_mc))
    {
    circle_mc.stopDrag();
    circle_mc.x = 175,50;
    circle_mc.y = 416,7;
    }

    }

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

    Prova così:

    Codice PHP:
    circle_mc.addEventListener(MouseEvent.MOUSE_DOWNdrag);
    circle_mc.addEventListener(MouseEvent.MOUSE_UPcollision);

    function 
    drag(e:MouseEvent):void
    {
        
    circle_mc.startDrag(true);
    }
    function 
    collision(e:MouseEvent):void
    {
        if (
    circle_mc.hitTestObject(sotto_mc))
        {
            
    circle_mc.stopDrag();
            
    circle_mc.175,50;
            
    circle_mc.416,7;
        }
        else
        {
            
    circle_mc.stopDrag();
            
    circle_mc.581,50;
            
    circle_mc.416,7;
        }

    In questo modo solo all'evento: MOUSE_UP viene valutato se circle_mc è in collisione con "sotto_mc". e in ogni caso viene eseguito lo stopDrag();

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    33

    Non funziona

    Ciao e grazie per l'aiuto.
    Non funziona. Una volta fatto click su circle questo si sposta leggermente in basso a destra e anche a pulsante alzato non viene rilasciato più, anche in hittest su sotto_mc


    Codice PHP:
    circle_mc.addEventListener(MouseEvent.MOUSE_DOWNdrag);
    circle_mc.addEventListener(MouseEvent.MOUSE_UPcollision);

    function 
    drag(e:MouseEvent):void
    {
        
    circle_mc.startDrag(true);
    }
    function 
    collision(e:MouseEvent):void
    {
        if (
    circle_mc.hitTestObject(sotto_mc))
        {
            
    circle_mc.stopDrag();
            
    circle_mc.175,50;
            
    circle_mc.416,7;
        }
        else
        {
            
    circle_mc.stopDrag();
            
    circle_mc.581,50;
            
    circle_mc.416,7;
        }

    In questo modo solo all'evento: MOUSE_UP viene valutato se circle_mc è in collisione con "sotto_mc". e in ogni caso viene eseguito lo stopDrag();

    ciao [/QUOTE]

  4. #4

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    33

    Così funziona

    Se nel file uso un mc semplice funziona, hai ragione.
    E allora non capisco perchè col mio mc elaborato, con varie parti animate, non funge.
    Studierò.

    Ti ringrazio tantissimo sei stato davvero UTILISSIMO !!!


    P.S. Ti interesserebbe lavorare in modo "articolato" trasformando piccoli file da as2 ad as3 ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    33

    Non mi funge

    Niente. Ho provato a creare vari file nuovi, inserendo solo lo script in question e e i due mc sotto_mc e circle_mc e non funziona.
    Una volta partito lo startdrag poi non si disattiva più e al mouse resta incollato circle_mc
    Uso FLASH cs 5.5

  7. #7
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Scarica il sorgente salvato per CS5.5

    Se il tuo MC contiene altri MC annidati è possibile che si generi un'interferenza sugli eventi del Mouse e la funzione chiamata al MOUSE_UP non viene eseguita.

    Se non hai bisogno di interagire con eventuali clip annidati dentro circle_mc puoi disattivare gli eventi Mouse sui clip annidati con:

    Codice PHP:
    circle_mc.mouseChildren false

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 © 2026 vBulletin Solutions, Inc. All rights reserved.