• Super User

    ok

    clicca [url=http://www.flashcoder.it/test/mappex.zip]qui


  • User

    ecco...perfetto...proprio quello che volevo...ora lo studio, lo adatto e poi se ho problemi...naturalmente posto di nuovo qui... :yuppi:

    grazie intanto....


  • User

    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&#40;clip._x<=-1120&#41;
    		&#123;
    			this.onEnterFrame=null;
    		&#125;
    		if&#40;clip._x>=20&#41;
    		&#123;
    			this.onEnterFrame=null;
    		&#125;
    
    
    

    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


  • Super User

    Metti gli if all'interno dell'onEnterFrame


  • Super User

    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&#40;&#41;:Void
    	&#123;
    		var x&#58;Number=_xmouse;
    		var dx&#58;Number=Stage.width/2-x;
    		this._x+=dx*friction;
    		if&#40;this._x>Stage.width+this._width/2&#41;
    		&#123;
    			this._x-=dx*friction;
    		&#125;
    		else if&#40;this._x<0-this._width/2&#41;
    		&#123;
    			this._x-=dx*friction;
    		&#125;
    	&#125;
    
    
    

  • User

    :mmm: ...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&#40;&#41;:Void 
       &#123; 
          var x&#58;Number=_xmouse; 
          var dx&#58;Number=Stage.width/2-x; 
          this._x+=dx*friction; 
          if&#40;this._x<0&#41; 
          &#123; 
             this._x-=dx*friction; 
          &#125; 
          else if&#40;this._x<-1120&#41; 
          &#123; 
             this._x-=dx*friction; 
          &#125; 
       &#125;
    
    

    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?


  • Super User

    La clip che contiene gli ovali deve avere il punto di registrazione al centro e poi il tuo errore adesso è 1120.

    Quì

    
    else if&#40;this._x<-1120&#41; 
    &#123; 
       this._x-=dx*friction; 
    &#125;
    
    

    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.


  • User

    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&#40;&#41;:Void 
       &#123; 
          var x&#58;Number=_xmouse; 
          var dx&#58;Number=Stage.width/2-x; 
          this._x+=dx*friction; 
          if&#40;this._x>920&#41; 
          &#123; 
             this._x-=dx*friction; 
          &#125; 
          else if&#40;this._x<-220&#41; 
          &#123; 
             this._x-=dx*friction; 
          &#125; 
       &#125; 
    
    

    mi daresti qualche indicazione in più per il loop....grazie per la tua disponibilità....


  • Super User

    A questo punto lo script diventa così:

    
    var my_clip:MovieClip=this.test_mc;
    var friction&#58;Number=.1;
    my_clip._x=Stage.width/2;
    move&#40;&#41;;
    
    function move&#40;&#41;&#58;Void
    &#123;
    	my_clip.onEnterFrame=function&#40;&#41;&#58;Void
    	&#123;
    		var x&#58;Number=_xmouse;
    		var dx&#58;Number=Stage.width/2-x;
    		this._x+=dx*friction;
    		if&#40;this._x>Stage.width+this._width/2&#41;
    		&#123;
    			this.onEnterFrame=null;
    			this._x=0-this._width/2;
    			reCallMove&#40;&#41;;
    		&#125;
    		else if&#40;this._x<=0-this._width/2&#41;
    		&#123;
    			this.onEnterFrame=null;
    			this._x=Stage.width+this._width/2;
    			reCallMove&#40;&#41;;
    		&#125;
    	&#125;
    &#125;
    function reCallMove&#40;&#41;&#58;Void
    &#123;
    	move&#40;&#41;;
    &#125;
    
    

    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.


  • User

    Perfetto...l'ho caricato al volo e funziona come previsto...

    ora ci lavoro per settarlo correttamente sui miei parametri...

    grazie ancora.... :vai: