- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- movie automatica con mouse
-
Ciao, Flash 8...poi il file lo devo rendere visibile per flashplayer 6...quello che hanno tutti poi ma lilo imposto in pubblicazione...
grazie...
-
ok
clicca [url=http://www.flashcoder.it/test/mappex.zip]qui
-
ecco...perfetto...proprio quello che volevo...ora lo studio, lo adatto e poi se ho problemi...naturalmente posto di nuovo qui...
grazie intanto....
-
Ciao flashcoder...
ho provato il gioiellino che mi hai passato...tutto perfetto funziona...ora volevo chiederti se si può fare in modo che si fermi ad un certo punto sia che vada a dx o sinistra...ho provato ad estrapolare parte di codice dal primo movie che avevo e l'ho messo come puoi vedere qui sotto ma non funziona....
my_clip.onEnterFrame=function():Void { var x:Number=_xmouse; var dx:Number=Stage.width/2-x; this._x+=dx*friction; } if(clip._x<=-1120) { this.onEnterFrame=null; } if(clip._x>=20) { this.onEnterFrame=null; }
o ancora meglio sarebbe se ricominciasse in automatico dal primo "ovale" (come da tuo esempio) il mio mc_test è lungo 1882 quindi non ci sono problemi di continuità....
ti ringrazio ancora per l'aiuto
mappex
-
Metti gli if all'interno dell'onEnterFrame
-
Poi con la logica condizionale che hai scritto hai dei problemi perchè non devi mai fermare l'intervallo onEnterFrame.
Io userei questa :
my_clip.onEnterFrame=function():Void { var x:Number=_xmouse; var dx:Number=Stage.width/2-x; this._x+=dx*friction; if(this._x>Stage.width+this._width/2) { this._x-=dx*friction; } else if(this._x<0-this._width/2) { this._x-=dx*friction; } }
-
...ho provato ad inserire il codice che mi hai dato ma...qualcosa non va...ho settato anche i parametri ma...da una parte si ferma correttamente e dall'altra continua all'infinito...
my_clip.onEnterFrame=function():Void { var x:Number=_xmouse; var dx:Number=Stage.width/2-x; this._x+=dx*friction; if(this._x<0) { this._x-=dx*friction; } else if(this._x<-1120) { this._x-=dx*friction; } }
if(this._x<0) //questo valore non mi permette di muiovere il movie a sx oltre l'inizio dello stage...se lo imposto if(this._x>1120) invece si ferma corretttamente sul lato dx alla fine del movie ma a dx va all'infinito.
e per la seconda ipotesi (quella di fare un movie continuato) è più laboriosa?
-
La clip che contiene gli ovali deve avere il punto di registrazione al centro e poi il tuo errore adesso è 1120.
Quì
else if(this._x<-1120) { this._x-=dx*friction; }
al posto di 1120 che sarebbe il _width della tua clip gli devi mettere il width/2.
Per la seconda ipotesi la cosa diventa più complessa.
Cioè se quelle logiche condizionali sono vere allora gli devi dire alla x della clip di tornare ad un punto in modo che l'effetto sia quello di un loop.
-
chiaro, coinciso, efficace...
ora tutto funziona...ho reimpostato il valore di x nel mc_test nella mia clip e tutto funziona....
posto il codice
my_clip.onEnterFrame=function():Void { var x:Number=_xmouse; var dx:Number=Stage.width/2-x; this._x+=dx*friction; if(this._x>920) { this._x-=dx*friction; } else if(this._x<-220) { this._x-=dx*friction; } }
mi daresti qualche indicazione in più per il loop....grazie per la tua disponibilità....
-
A questo punto lo script diventa così:
var my_clip:MovieClip=this.test_mc; var friction:Number=.1; my_clip._x=Stage.width/2; move(); function move():Void { my_clip.onEnterFrame=function():Void { var x:Number=_xmouse; var dx:Number=Stage.width/2-x; this._x+=dx*friction; if(this._x>Stage.width+this._width/2) { this.onEnterFrame=null; this._x=0-this._width/2; reCallMove(); } else if(this._x<=0-this._width/2) { this.onEnterFrame=null; this._x=Stage.width+this._width/2; reCallMove(); } } } function reCallMove():Void { move(); }
Te l'ho fatto al volo e funziona, sarebbe da ottimizzare ma non ho molto tempo e penso che comunque potrebbe andar bene per quello che necessiti.
-
Perfetto...l'ho caricato al volo e funziona come previsto...
ora ci lavoro per settarlo correttamente sui miei parametri...
grazie ancora....