Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    modificare azione mouse in variabile

    salve a tutti
    ho questo file flash dove delle formiche che si muovono scappano all'avvicinarsi del mouse.

    a me servirebbe modificare il file in modo che lo scappare delle formiche non sia dato dal mouse, ma da due variabili (var) sostituire xmouse, ymouse con variabili che io inseriro' dall'esterno.
    ho fatto tante prove ma non ci riesco, potete aiutarmi?

    il file è nel link sotto:

    www.dotzero.it/hormigas.fla

    Grazie a tutti.

  2. #2
    Ho modificato il tuo codice in due punti evidenziati da dei commenti:

    codice:
    //------------------------parte aggiuntiva
    var incrx=225;
    var incry=-150;
    _root.onMouseDown=function():Void{
    incrx=50;
    incry=50;	
    }
    //----------------------fine parte aggiuntiva
    _root.total = 75;
    MovieClip.prototype.change_objectif = function() {
    	this.x = 300-Math.random()*600;
    	this.y = 300-Math.random()*400;
    };
    MovieClip.prototype.fourmis = function() {
    	var _l1 = this;
    	_l1.speed = _l1.speed_init=4;
    	_l1.change_objectif();
    	_l1.onEnterFrame = function() {
    		var _l1 = this;
    		if (_l1._alpha<100) {
    			_l1._alpha = _l1._alpha+15;
    		}
    		// end if  
    		if (Math.round(Math.random()*100)<3) {
    			_l1.change_objectif();
    		}
    		// end if  
    		var delta_x = _l1._x-_l1.x;
    		var _l3 = _l1._y-_l1.y;
    		var targetRotation = -Math.atan2(delta_x, _l3)/0.017453;
    		//var delta_x2 = _l1._x-_l1._parent._xmouse;
    		//var delta_y2 = _l1._y-_l1._parent._ymouse;
    		// ------------------------------------parte modificata
    		var delta_x2=_l1._x-incrx; 
    		var delta_y2=_l1._y-incry;
    		// ------------------------------------parte modificata
    		var dist = Math.sqrt(delta_x2*delta_x2+delta_y2*delta_y2);
    		if (dist<100) {
    			if (_l1.son != true) {
    				if (Math.random()*100<50) {
    					if (Math.random()*100<50) {
    						cri.start(0, 1);
    					} else {
    						non.start(0, 1);
    					}
    					// end if
    				}
    				// end if  
    				_l1.son = true;
    			}
    			// end if  
    			_l1.speed = (100-dist)/8+6;
    			var _l2 = -Math.atan2(delta_x2, delta_y2)/0.017453;
    			_l1.x = -100*Math.sin(_l2*0.017453);
    			_l1.y = 100*Math.cos(_l2*0.017453);
    			_l1._rotation = _l2+180;
    		} else {
    			_l1.speed = _l1.speed_init;
    			_l1.son = false;
    		}
    		// end if
    		if (_l1._rotation<targetRotation) {
    			_l1._rotation = _l1._rotation+5;
    		}
    		// end if  
    		if (_l1._rotation>targetRotation) {
    			_l1._rotation = _l1._rotation-5;
    		}
    		// end if  
    		if (Math.sqrt(delta_x*delta_x+_l3*_l3)>_l1.speed) {
    			_l1.play();
    			_l1.carton.carton_int.play();
    			_l1._y = _l1._y-_l1.speed*Math.cos(_l1._rotation*0.017453);
    			_l1._x = _l1._x+_l1.speed*Math.sin(_l1._rotation*0.017453);
    		} else {
    			_l1.stop();
    			_l1.carton.carton_int.stop();
    		}
    		// end if
    	};
    };
    stop();
    Nella prima parte del codice ho creato due variabili: incrx e incry.
    Ad entrambe gli ho dato il valore che le espressioni _l1._parent._xmouse e _l1._parent._ymouse hanno di default. Le variabili incrx e incry sono quelle che ho utilizzato per dare dei valori al posto del movimento del mouse.
    Ho anche aggiunto un evento onMouseDown per fare una prova e spostare le formiche sempre nello stesso punto con un click. Io ho messo 50, ma è solo per fare una prova...

    Ciao

  3. #3
    grazie mille è perfetto,
    proprio cosa mi serviva.
    una sola domanda:
    se per ogni asse (incrx ed incry) invece di un valore gli arrivano due valori,
    c'è la possibilità di far spostare le formiche sia nel punto x,y 1 che nel punto x,y 2 ?

    forse è molto piu' complesso, e' soltanto per curiosita', magari e' facilissimo e penso male io.

    grazie ancora mi hai risolto un gran problema.

    Ciao

  4. #4
    Purtroppo quando il codice non lo hai scritto tu non è mai facilissimo, questo perché ogni programmatore ragiona a modo suo... Io per esempio, lo stesso codice lo avrei impostato in modo completamente diverso.

    In ogni caso, se intendi due ostacoli per le formiche (e non uno) credo si possa fare, ma bisognerebbe reimpostare quasi tutto, non basta cambiare il riferimento al mouse in due righe come ho fatto prima. La funzione per come è stata impostata prevede due coordinate e non 4.
    Adesso non ho tempo, se non vai di fretta posso provare a dare uno sguardo nei prossimi giorni.

  5. #5
    no no grazie,
    era solo per curiosità per un'idea che avevo.
    comunque mi è servito molto la modifica anche per capire come posso procedere altre volte.

    Grazie mille.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.