Ciao.
Non è possibile cambiare realmente il puntatore del mouse da flash. Questa è un'impostazione del sistema che non puoi modificare con flash.
Ciò che hai già realizzato può andare bene e con qualche piccolo accorgimento puoi risolvere quanto hai richiesto.
piccolo problema... se clicco con il tasto destro sul mio filmato (cosi da far comparire il relativo menu) ritornando poi su di esso il puntatore classico ritorna a farsi vedere.
In questo caso puoi risolvere inserendo la funzione hide() all'interno dell'evento onMouseMove in modo che il mouse sia ripetutamente reso invisibile.
Unico problema, risulterà invisibile anche quando appare il menu contestuale.
Per questo puoi utilizzare un oggetto contextMenu e il relativo evento onSelect che viene richiamato prima di aprire il menu e nel quale renderai visibile il puntatore del mouse (e volendo potrai rendere invisibile il clip cursore)
Non essendoci però un evento che si verifica alla chiusura del menu contestuale, si deve usare un escamotage in modo che il mouse e il clip cursore si aggiornino quando si clicca per uscire appunto dal menu. L'aggiornamento avverrebbe comunque non appena si muove il mouse. Finchè si sta fermi, però, il puntatore si continuerà a vedere ed il clip cursore resterà nell'ultima posizione che aveva prima che venisse aperto il menu contestuale (se lo avevi reso invisibile ovviamente non lo vedrai).
Curiosità:
Da quanto ho potuto constatare ci sono alcune differenze tra i diversi browser.
Su FF, lo stesso click effettuato per uscire dal menu ah piena funzionalità sul filmato.
Ad esempio se si è cliccato su un pulsante, uscendo dal menu, questo risponde normalmente all'azione.
Su IE invece, il click effettuato per uscire dal menu contestuale non comporta azioni su eventuali pulsanti nel filmato. Inopltre le proprietà _xmouse e _ymouse non si aggiornano fintanto che non si muova il mouse o che non si rilasci il pulsante del mouse.
Ho usato, a tal proposito, l'evento onMouseUp (che avviene appunto quando si rilascia il mouse) per forzare l'aggiornamento dopo il click, nel caso si restasse fermi col mouse uscendo dal menu contestuale.
... che codice posso usare per far si che il mio puntatore si animi in un certo modo ogni qual volta il tasto sx del mause viene premuto... indipendentemente dal fatto di trovarsi o meno su un elemento...?
Dovresti usare un oggetto listener per "catturare" gli eventi del mouse tra cui l'evento onMouseUp, citato sopra, e onMouseDown dove inserirai le azioni per animare il cursore.
Puoi creare l'animazione all'interno dello stesso clip cursor_mc, dove inserirai uno stop() nel primo frame.
Sostituisci poi il tuo script con il seguente, che metterai nel primo frame della root:
Codice PHP:
// al movimento del mouse nascondo il mouse e sposto il clip
onMouseMove = function () {
Mouse.hide();
cursor_mc._visible = true;
cursor_mc._x = _xmouse;
cursor_mc._y = _ymouse;
updateAfterEvent();
};
// inizializzo mouse e clip cursore
onMouseMove();
// aggiungo un listener per catturare il click
var mouseListener:Object = new Object();
mouseListener.onMouseDown = function() {
// al click eseguo l'animazione del cursore
// a meno che non abbia cliccato per uscire dal menu contestuale
if (!menuOperto) {
cursor_mc.play();
}
};
Mouse.addListener(mouseListener);
// all'apertura del menu contestuale rendo visibile il mouse e invisibile il clip
_root.menu = new ContextMenu();
menu.onSelect = function() {
menuOperto = true;
Mouse.show();
cursor_mc._visible = false;
};
// faccio un refresh quando esco dal menu contestuale per aggiornare mouse e clip cursore
var menuOperto = false;
mouseListener.onMouseUp = function() {
if (menuOperto) {
menuOperto = false;
onMouseMove();
}
};
Ecco pronto il tuo puntatore personalizzato..
Curiosità: lo stesso evento onMouseMove può essere gestito attraverso il listener anzichè associarlo al clip, ma in quel caso ho constatato che la funzione updateAfterEvent() non funge. Non ne so il motivo, per cui è meglio lasciare l'evento sul clip o definirlo al livello principale (come ho fatto).