Ciao a tutti,
che qualcuno sappia, è possibile utilizzare il cursore tipico del rollover (la manina) con un hitTest?
Un saluto
Ciao a tutti,
che qualcuno sappia, è possibile utilizzare il cursore tipico del rollover (la manina) con un hitTest?
Un saluto
Zona - alias Danesi
La manina appare sui movieclip quando gli si assegna un evento legato al mouse, anche se è vuoto. Ma non ho compreso appieno il tuo caso, c'è un codice particolare?
No... Il codice è uno standard
vorrei solamente che il passaggio del mouse sulla zona hit_zone smebrasse all'utente un banale rollOver.codice:if(hit_zone.hitTest(_root._xmouse, _root._ymouse, true)) { end_point = _xmouse; }
Zona - alias Danesi
Non avendo abbastanza informazioni sulla cosa, ti chiedo: perchè allora non fai direttamente un semplice rollover?
Devo caricare uno slider con le icone di preview di un photo gallery da file XML.
Il numero delle immagini è a priori ignoto.
Pertanto carico un tot di volte un contenitore "vuoto" presente nella libreria (contiene solo un piccolo loader) e ci carico sopra le immagini:
Il problema è che ovviamente il comando onRollOver commentato non funziona (non c'è alcun controllo sullo stato di caricamento delle icone) e quindi ho usato un comando mediante hitTest che funziona:codice:for(var s=1; s < (_root.numero_immagini_tipo1); s++) { _level0.tipo1.contenitore_th.attachMovie("tipo1_th_mc", "tipo1_th_" + s, 600 + s); var immagi = _root.cartella + "/th/"+ itempArray[_root._posizione_assoluta].childNodes[_root.sub_link_to_open].childNodes[s].attributes.immagine; _level0.tipo1.contenitore_th["tipo1_th_" + s].loadMovie(_root.cartella + "/th/"+ itempArray[_root._posizione_assoluta].childNodes[_root.sub_link_to_open].childNodes[s].attributes.immagine); _level0.tipo1.contenitore_th["tipo1_th_" + s]._x = -140 + 140 * s; _level0.tipo1.contenitore_th["tipo1_th_" + s]._y = 0; _level0.tipo1.contenitore_th["tipo1_th_" + s]._alpha = 70; //_level0.tipo1.contenitore_th["tipo1_th_" + s].onRollOver = th_rollover; }
Un salutocodice:onMouseDown = function() { for( i = 1; i < _root.numero_immagini_tipo1; i ++) { if (_level0.tipo1.contenitore_th["tipo1_th_" + i].hitTest(_root._xmouse, _root._ymouse, true)) { trace("premuto = " + i); } } }
Zona - alias Danesi
Ok, allora prova a impostargli la proprietà useHandCursor=true, anche se non sono sicuro che possa funzionare se prima non viene verificato il caricamento.
Mal che vada ti basta nidificare un ulteriore clip vuoto dentro a quello che già hai, e assegnare a quest'ultimo il caricamento, mentre al clip vuoto principale metti le azioni onRollOver che ti interessano.
Purtroppo useHandCursor=true non funziona.
Provo ad usare un oggetto vuoto.
Esiste il modo di caricare una serie di icone da xml utilizzando un ciclo for e riuscendo ad assegnare a ciscun oggetto un listener per poter controllare che, ad esempio siano state caricate tutte le icone) e poi assegnare loro un comando di rollOver che tenga conto di quale icona sia sotto il mouse?
Un saluto
Zona - alias Danesi
Se vuoi provarla, ho scritto una piccola classe "LoaderManager" che gestisce i caricamenti multipli e che può aiutarti, anche se banalmente ti basta un singolo moviecliploader per gestire il caricamento di più file esterni.
In caso, la classe la trovi in questo post.
Non vorrei andare fuori tema rispetto l'oggetto, ma in che senso è sufficiente un singolo mcloader.
Ho provato caricale un file per volta, utilizzando un singolo loader (assegnato sequenzialmente ai vari file) ma risulta lento ripetto alla soluzione di creare un loader (con rispettivo listener) per ogni file.
Il problema è che all'interno di un ciclo for in cui vengono creati gli oggetti e i vari loader e listener il comando onLoadComplete non funziona.
Zona - alias Danesi
Salvo che non lo sovrascrivi ad ogni ciclo, il loader deve funzionare con le azioni corrette che gli assegni, un esempio banale può essere:
Se confronti i trace, vedrai che tutti i caricamenti compiono le stesse azioni, ma su istanze separate, senza intrecciarsi e senza che qualcosa non venga eseguita.Codice PHP:var loader:Object = new MovieClipLoader();
loader.onLoadStart = function (t:MovieClip) {
trace ("Il caricamento è partito sul clip "+t;
}
loader.onLoadProgress = function (t:MovieClip, bl:Number, bt:Number) {
trace ("Caricati "+bl+" di "+bt+" totali, pari al "+(Math.floor((bl/bt)*100))+"% sul clip "+t);
}
loader.onLoadComplete = function (t:MovieClip) {
trace ("Il caricamento è stato completato sul clip "+t;
}
loader.onLoadInit = function (t:MovieClip) {
trace ("Il file esterno è inizializzato e pronto sul clip "+t);
}
loader.onLoadError = function (t:MovieClip, e:String) {
trace ("Caricamento fallito sul clip "+t+". Errore: "+e);
}
for (var i:Number=0; i<10; i++) {
var img = "img/"+i+".jpg";
var mc:MovieClip = this.createEmptyMovieClip("canvas", this.getNextHighestDepth());
loader.loadClip(img, mc)
}
In ogni caso, analizzando il tuo codice, penso che sia meglio che utilizzi un mc vuoto nidificato, come ti suggerivo qualche post indietro.