Flash: personalizzazione cursore del mouse e suo movimento.

Di: Gwanìm | 26/09/2020 18:35:15
Ciao a tutti!!!
Oggi stavo programmando in ActionScript e mi sono bloccato su un punto: ho un filmato con un campo di testo selezionabile "my_txt" (che non occupa tutta l'area dello stage), ho definito l'MC che contiene la forma (nome istanza: "freccia") nuova che deve avere il cursore del mouse e ho notato varie cose:
1) Non ho ben chiaro (sono un ignorante!) un modo per far sì che quando il mouse esce dallo stage, scompaia l'immagine residua del nuovo cursore, anche se oggi cercando qua e là per la rete ho trovato qualcuno che suggeriva un suggerimento del genere:
function controllo(){
Stage.scaleMode="exactFit";
hMax = Stage.height;
lMax = Stage.width;
margine = 10;
trace (hMax);
trace (lMax);
this.logo.onEnterFrame = function (){
trace(_root._xmouse);
trace(_root._ymouse);
if
(_root._xmouse<lMax-margine)&&(_root._ymouse<hMax-margine)&&(_root._xmouse>0+margine)&&(_root._ymouse>0+margine)
{
creaCursore();
} else {cancellaCursore();
}
}
}
function creaCursore(){
this.attachMovie("cursore","cursore",99999);
cursore.onEnterFrame = function() {
Mouse.hide();
this.startDrag(true);
}
}
function cancellaCursore(){
cursore.removeMovieClip;
Mouse.show();
}
controllo();
Purtroppo non sono riuscito ad adattarlo alle mie esigenze e quindi non sono riuscito a farlo funzionare, né riesco ad ottimizzare ciò che c'è scritto. Volevo inoltre sostituire l'onEnterFrame con un setInterval() e il resto della funzione con:
this.attachMovie("freccia", "freccia", this.getNextHighestDepth());
Mouse.hide();
freccia.onMouseMove = function() {
this._x = this._parent._xmouse;
this._y = this._parent._ymouse;
updateAfterEvent();
}
2) Sul campo di testo selezionabile oltre al mio puntatore personalizzato, appare anche il puntatore di selezione testo, quindi la mia intenzione era o eliminare il mio puntatore personalizzato definendo come "proibita" (ma come si dice che non mi viene?) l'area del campo di testo con dei "sani" if, oppure esiste un modo per dire "quando sei sul campo di testo 'my_txt' escludi la visualizzazione del puntatore di selezione testo"?
Se qualcuno potesse aiutarmi gliene sarei GRATO!!!

Risposte



Rispondendo al primo quesito, sapendo le dimensioni dello stage, es. 500*500, basta inserire un if, cioè se _xmouse è minore di 0 e maggiore di 500, idem per _ymouse, rendi invisibile il cursore che è un clip, con la proprietà _visible.
Per il secondo quesito non so, prova a vedere proprietà e metodi dei campi di testo, tipo il focus ecc.

Di: goku | 26/09/2020 18:35:15


Bene, grazie alle tue dritte sono riuscito a fare qualcosa con questo codice:
function controllo() {
if((_root._xmouse>0)&&(_root._xmouse<Stage.width)&&(_root._ymouse>0)&&(_root._ymouse<Stage.height)) {
this.attachMovie("freccia", "freccia", this.getNextHighestDepth());
Mouse.hide();
freccia.onMouseMove = function() {
this._x = this._parent._xmouse;
this._y = this._parent._ymouse;
updateAfterEvent();
}
} else {
freccia.removeMovieClip();
Mouse.show();
}
}
controllo();
Questo permette al filmato di caricare il puntatore verificandone la posizione solo una volta, proprio in fase di caricamento; quindi se quando carica il filmato il mouse si trova al di fuori dello stage, vedo il cursore classico, se invece il mouse si trova sullo stage mi appare il mio cursore personalizzato. E' un bel passo avanti, ma come posso fare per fare in modo che aggiorni la condizione di if...else finché non viene chiuso il filmato? Ho cercato invano di impostare un setInterval, ma sono solo riuscito a fare un bel casino ... qualcuno potrebbe suggerirmi un modo ?

Di: Gwanìm | 26/09/2020 18:35:15


Se non ho capito male credo che possa bastare utilizzare onMouseMove(), ogni qual volta che il mouse si muove esegui la tua funzione di controllo che poi gestirà il tutto

Di: goku | 26/09/2020 18:35:15