Flash 8: aree sensibili e bottoni

Di: Perath | 26/09/2020 18:58:21
Salve a tutti, sono nuovo del Forum.
Ho un problema con Flash 8:
ho uno sfondo che si muove grazie a Math.random() e setProperty, che si blocca tramite background.onRollOver e funzione associata, un puntatore che fa la stessa cosa (random fino a onRollOver dove parte startDrag() ) e dei bottoni riuniti in un Movie Clip (links) che ha alpha = 10%.
Vorrei che "links" quando il mouse entra nell'area di flash passassero da _alpha=10% a 100% e quando il mouse esce dall'area del flash movie tornino al 10%.
Ci sono andato vicino ma quando il cursore entra nell'area : il background si ferma > il cursore segue il mouse e "links" accresce di 10 ogni frame fino al 100% (fin qui tutto ok) il problema è che se mi sposto sul link, il programma percepisce lo stato del mouse onRollOut, facendo tornare tutto allo stato di partenza!!!
L'animazione è controllata anche questa da un piccolo script... ho provato a usare una variabile "rurrning" impostandola su true nei frames in cui incrementa o decrementa la trasparenza e ad associare if(running==false) al richiamo della funzione che attiva/disattiva il fading... tutto inutile, il risultato non è quello che cerco.
Come posso fare?

Risposte



Credo che tu possa risolvere il problema sostituendo il comando background.onRollOver con un ifTest relativo all'area del movie flash.
Facci sapere.

Di: goku | 26/09/2020 18:58:21


Se intendi un if() con la posizione del mouse (_xmouse <= width && _ymouse <= height) ho già provato: non esegue nessuna istruzione.

Di: Perath | 26/09/2020 18:58:21


Anche mettendo _root._xmouse?
Oppure prova a creare un mc trasparente dell'area che ti interessa ed usare l'hitTest.

Di: bisbiturro | 26/09/2020 18:58:21


Scusami, mi è sfuggito l'errore, intendevo il comando hitTest, cmq dovrebbe funzionare anche con il tuo primo esempio, anzi forse è anche meglio!
Per quanto riguarda la posizione del mouse devi riferirti alla root, quindi usare _root._xmouse ecc.

Di: goku | 26/09/2020 18:59:21


Niente da fare... anche con _root._xmouse non esegue alcuna istruzione. Avevo già provato anche con un button trasparente con hitArea grande come tutto il movie flash e con on(RollOver) nelle actions del bottone con le stesse istruzioni di background.onRollOver: al cambio di area non eseguiva correttamente le istruzioni (a me serve che non cambi nulla). Con hitTest invece non so bene come impostarlo...

Di: Perath | 26/09/2020 18:59:21


Dove e come applichi lo script per controllare la posizione del mouse?
Posta i tuoi script.

Di: goku | 26/09/2020 18:59:21


Questo script è in layer: Actions, primo frame, scena 1 (tutto il movie flash sta su un frame, in diversi livelli):
-----------------------------------
Mouse.hide();
_root.bg.onRollOver = stopAni;
function stopAni() {
_root.bgCtrl.stop();
_root.txtCtrl.gotoAndStop(3);
_root.curCtrl.stop();
startDrag("cur",true);
_root.sq.gotoAndPlay(2);
_root.linksCtrl.gotoAndPlay(2);
}
_root.bg.onRollOut = playAni;
function playAni() {
_root.bgCtrl.gotoAndPlay(1);
_root.txtCtrl.gotoAndPlay(1);
_root.curCtrl.gotoAndPlay(1);
_root.sq.gotoAndStop(1);
_root.linksCtrl.gotoAndStop(1);
}
---------------------------------------
Ogni MC che termina per Ctrl è un MC di diversi frames con azioni associate ad ogni frame per l'animazione delle istanze.
Lo script seguente è associato ai bottoni annidati nel MC links:
-------------------------------------------
on(rollOver) {
_root.bgCtrl.stop();
_root.txtCtrl.gotoAndStop(3);
_root.homeAni.gotoAndPlay(2);
_root.curCtrl.stop();
startDrag("cur",true);
_root.sq.gotoAndPlay(2);
_root.linksCtrl.gotoAndStop(5);
}
on(rollOut) {
_root.bgCtrl.gotoAndPlay(1);
_root.txtCtrl.gotoAndPlay(1);
_root.homeAni.gotoAndStop(1);
_root.curCtrl.gotoAndPlay(1);
}
----------------------------------------------
Se non bastano questi posto il file .fla.
Inoltre, il clip sq ha associato il seguente script:
-----------------------------------------------
onClipEvent (enterFrame) {
_x += (_root._xmouse-_x)*.35;
_y += (_root._ymouse-_y)*.35;
}
-------------------------------------------------
è l'unico senza il relativo Ctrl. E' composto da tre frames:
il primo con action stop(); vuoto, il secondo con il cursore e action play();, e il terzo vuoto con action gotoAndPlay();.
Inizialmente richiamavo il frame 2 con gotoAndPlay(2); dagli script nel layer Actions e nei bottoni e non funzionava: se il mouse era su bg lampeggiava ma appena spostavo sui bottoni (nonostante il gotoAndPlay(2);) smetteva di lampeggiare... poi per caso ho provato a mettere play(); nel secondo frame e ha funzionato. Come mai?

Di: Perath | 26/09/2020 18:59:21


Se mandi il fla è meglio, così posso fare delle prove concrete.
Controlla i tuoi messaggi privati.

Di: goku | 26/09/2020 18:59:21