• Super User •

    In quel caso ho applicato teorema di Pitagora e trigonometria ad Actionscript.

    Tu potresti avvicinarti partendo da questo concetto:

    ti allego il .fla

    http://www.flashcoder.it/test/mappex.zip


  • User •

    Ciao flashcoder...

    non riesco a scaricare il file....mi dice inesistete...
    grazie intanto per l'aiuto...già una volta mi avevi aiutato....

    guarda qui...http://www.giorgiotave.it/forum/viewtopic.php?t=9341&highlight=ronciazoc

    me la ricarichi? grazie
    Mappex 🙂


  • Super User •

    Per Flash 8 oppure MX ?


  • User •

    Ciao, Flash 8...poi il file lo devo rendere visibile per flashplayer 6...quello che hanno tutti poi ma lilo imposto in pubblicazione...

    grazie... 😉


  • 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: