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

    [mx] actionscript particolare

    Ciao ho creato un mapping con un' immagine duplicata, con dimensioni differenti.
    sulla piccola si clicca e la grande si sposta in quel punto

    volevo applicare allo script il moto elastico.
    chi mi aiuta?

    codice:
    //Applico moto elastico
    controllo.onLoad = function() {
    arrivo = _x;	
    acc = 2;
    ine = 3;
    }
    controllo.onEnterFrame = function() {		
    dx = (dx+(arrivo-_x)/acc)/ine;		
    _x += dx;							
    if (Math.abs(_x-arrivo)<0.5) {	
    _x = arrivo;			
    }				
    }
    //costruisco mapping
    //big è la grossa e small la piccola
    stop();
    //dimensioni della mappa grossa
    b = new Object();
    b.xMin = 30;
    b.xMax = -809;
    b.yMin = 27;
    b.yMax = -210;
    b.width = b.xMax-b.xMin;
    b.height = b.Ymax - b.yMin;
    //stesso per il piccolo
    s = small.getBounds(_root);
    s.width = s.xMax - s.XMin;
    s.height = s.yMax - s.yMin;
    //codice per il mouse
    /*_root.onMouseMove = function(){
    	var percentX = (_root._xmouse - s.xMin)/s.width;
    	var percentY = (_root._ymouse - s.yMin)/s.height;
    	big._x = b.xMin+ (percentX*b.width);
    	big._y = b.yMin+ (percentY*b.height);
    	updateAfterEvent();
    }*/
    small.onMouseDown = function(){
    	clicking = true;
    	moveBig();
    }
    small.onMouseUp = function(){
    	clicking = false;
    }
    small.onMouseMove = function(){
    	if(clicking){
    		//moveBig();
    		//updateAfterEvent();
    	//}
    	//mag._x = _root._xmouse;
    	//mag._y = _root._ymouse;
    	moveBig();
    	if(big._x<b.xMax){
    		big._x=b.xMax;
    	}
    	if(big._x>b.xMin){
    		big._x = b.xMin;
    	}
    	if(big._y<b.yMax){
    		big._y = b.yMax;
    	}
    	if(big._y>b.yMin){
    		big._y = b.yMin;
    	}
    	updateAfterEvent();
    }
    }
    function moveBig(){
    	var percentX = (_root._xmouse - s.xMin)/s.width;
    	var percentY = (_root._ymouse - s.yMin)/s.height;
    	big._x = b.xMin+ (percentX*b.width);
    	big._y = b.yMin+ (percentY*b.height);
    }
    come potete vedere ho segnato con grassetto le parti do codice che andrebbero integrate tra di loro.

    Io penso che dovrei sostituire big._x con arrivo.

  2. #2
    ho troppo sonno per stare a guardare tutto lo scriptone... cmq sia in generale... per applicare il moto elastico devi aggiungere all'incremento di posizione dell'oggetto una percentuale della sua velocità attuale:
    codice:
    speedfactor=5;
    elastic_factor=0.75;
    /////////////////////////
    diffx=targetx-_x;
    
    oldx=_x;
    _x+=diffx/speedfactor+speedx*elastic_factor;
    newx=_x;
    
    speedx=newx-oldx;

    ciao
    "La consapevolezza di Case suddivisa come perle di mercurio. La sua visione era sferica, come se una singola retina rivestisse la superficie interna di un globo che conteneva tutte le cose, se tutte le cose si potevano contare." —Neuromante, William Gibson (1984)

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.