Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Verificare se un punto appartiene a una movieclip

    Ciao a tutti!

    Esiste una funzione per verificare se un punto (in coordinate rispetto allo stage) appartiene a una movieclip? Qual è?

    Grazie!


  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    mmh... i sistemi di coordinate sono diversi internamente ad ogni clip... quindi non si può proprio dire che una determinata coppia di coordinate appartenga ad un clip (anche perchè alcuni potrebbero essere sovrapposti, perciò "l'appartenenza" nella sovrapposizione sarebbe sempre del clip di più alto livello)

    probabilmente quello che ti serve è di conoscere ad un determinato evento, se il puntatore del mouse si trova su di un determinato clip... è questo che vuoi?

  3. #3
    Ciao!

    Quello di cui avrei bisogno è proprio sapere se la coppia (Px, Py), misurata nel sistema di riferimento dello stage, fa parte della movieclip di nome mc. Credo di riuscire a implementare una funzione che faccia questo ("basta" prendere gli intervalli dx e dy appartenenti alla movie clip e vedere se :
    (mc._x < Px < mc._x + dx) && (mc._y < Py < mc._y + dy)) ma essendo un procedimento macchinoso, ho preferito chiedere; magari esisteva già funzione di linguaggio con lo stesso compito. Devo dire che mi sembra strana una simile assenza... Dovrebbe essere un'operazione abbastanza utile e ricorrente.

    In ogni caso grazie per l'aiuto!

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    certo che c'è il sistema, il problema è che non ho ancora capito da dove ricavi queste coordinate e sopratutto a cosa ti serve... è probabile che ci siano metodi più semplici e veloci per fare quel che chiedi

  5. #5
    Riciao!

    Visto che un moderatore mi chiede di spiegare a cosa mi serve non dovrei aver paura di fare spam
    E' sempre per il solito programma del garagista: http://www.lyra.net/fabio/giochi/garage_def.html

    Se provi a giocarci noterai che, se non si è più che precisi, quando un'auto collide un'altra, anche di pochissimo, questa viene riportata alla posizione di partenza. Vorrei trovare un modo elegante (a livello di codice) per far posizionare l'auto nella prima casella "libera". A parole è una banalità descrivere il procedimento, a codice è ben altra cosa. Comunque avevo pensato di vedere
    Codice PHP:
    se auto._x e ._y fosse compreso nella movieclip che viene urtata (cioè se urta dal davanti). In questo caso
        
    se auto._height auto._width allora 
            avrei dovuto togliere alle y diciamo 20 e poi invocare la funzione di posizionamento sulla griglia
    .
        
    Altrimenti
            avrei tolto a x 20
    altrimenti 
    (se urta dal retro)
        
    se auto._height auto._width allora 
            avrei dovutoaggiungere alle y diciamo 20 e poi invocare la funzione di posizionamento sulla griglia
    .
        
    Altrimenti
            avrei aggiunto a x 20 
    E' un po' difficile da spiegare, ma qualunque idea alternativa è ben accetta...

    Saluti!

    Fabio

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    mmh pressappoco ho capito, comunque se le caselle sono dei movieclip, è possibile utilizzare un listener per il mouse, che verifichi su quale casella si trova in quel momento il puntatore e di conseguenza, al rilascio del mouse, faccia l'update delle coordinate in cui riportare il clip "macchina" preso in quel momento

    il codice generico per un listenere del mouse è questo

    codice:
    var o = new Object();
    o.onMouseMove = function(){
    // azioni al movimento del mouse (update delle coordinate di riposizionamento del clip)
    }
    o.onMouseDown = function(){
    // azioni alla pressione del pulsante sinistro del mouse (scelta del clip di cui ricalcolare le coordinate di riposizionamento
    }
    o.onMouseUp = function(){
    // azioni al rilascio del pulsante sinistro del mouse (riposizionamento del clip scelto)
    }
    Mouse.addListener(o);

  7. #7
    Heilà!
    Interessante la roba sui listener, non ne avevo mai sentito parlare. In ogni caso gestire l'evento mouse è troppo fuorviante, nel caso uno lo muova troppo velocemente e lo rilasci prima che l'urto sia effettivamente registrato. Ho trovato un'altra soluzione che sembrerebbe soddisfacente. In pratica faccio controllare se c'è stato urto, poi allineo alla griglia e se c'è ancora urto sposto la macchina. Se qualcuno vuole testarlo
    http://www.lyra.net/fabio/giochi/garage_defPoint.html

    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.