Visualizzazione dei risultati da 1 a 6 su 6

Discussione: draggare oggetti

  1. #1

    draggare oggetti

    vorrei utilizzare un fla che ho trovato per un'idea... c'è un rettangolino che può essere draggato per essere agganciato in una base, io veorrei fare in modo che ci siano più rettangolini draggabili e non solo uno, ho provato in tutti i modi ma non riesco a venirne a capo, eppure non dovrebbe essere difficilissimo. qualcuno sa aiutarmi, allego lo zip perchè altrimenti non so descrivere la cosa

    grazie a tutti

    paola






    http://digilander.libero.it/paola_revello/fla/base.zip

  2. #2
    sembra un po' noioso modificare il codice dell'esempio...
    se vuoi solo rendere draggabile uno o più oggetti il codice è semplice;
    cosa vorresti fare di preciso?
    [Il mio sito V2]
    ___________________
    I.m.The.Magic.Man

  3. #3

    la cosa è più complessa

    ... in realtà non è solo rendere draggabili più oggetti ma fare in modo che questi raggiunta una determinata posizione siano attirati e agganciati a quella... proprio come nell'esempio...

  4. #4
    vomito un po' di actionscript...
    vedi cosa ti può servire...
    fai un copia-incolla per vederne l'effetto.

    codice:
    numElementi = 6;
    latoQuadrato = 50;
    distanzaAggancio = latoQuadrato/2;
    oggettiStatici = new Array();//qui ci metto gli oggetti fermi a cui voglio agganciarmi
    oggettiTrascinabili = new Array();//qui gli oggetti da trascinare
    
    //creo dinamicamente gli oggetti statici e li posiziono
    //sullo stage
    for (i=0; i<numElementi; i++) {
    	_root.createEmptyMovieClip("oggettoStatico"+i, i);
    	disegnaContornoQuadrato(_root["oggettoStatico"+i], latoQuadrato, 0x000000);
    	_root["oggettoStatico"+i]._y = latoQuadrato/2;
    	_root["oggettoStatico"+i]._x = latoQuadrato/2+3*latoQuadrato/2*i;
    	_root["oggettoStatico"+i].colore = new Color(_root["oggettoStatico"+i]);
    	oggettiStatici.push(_root["oggettoStatico"+i]);
    }
    
    //creo dinamicamente gli oggetti tarscinabili e li posiziono
    //sullo stage
    for (i=0; i<numElementi; i++) {
    	_root.createEmptyMovieClip("oggettoTrascinabile"+i, i+numElementi);
    	disegnaRiempimentoQuadrato(_root["oggettoTrascinabile"+i], latoQuadrato, 0xCCCCCC);
    	disegnaContornoQuadrato(_root["oggettoTrascinabile"+i], latoQuadrato, 0x000000);
    	_root["oggettoTrascinabile"+i]._y = 2*latoQuadrato;
    	_root["oggettoTrascinabile"+i]._x = latoQuadrato/2+3*latoQuadrato/2*i;
    	oggettiTrascinabili.push(_root["oggettoTrascinabile"+i]);
    }
    
    //assegno il comportamento agli oggetti trascinabili
    for (i=0; i<oggettiTrascinabili.length; i++) {
    	//quando clicco sull'oggetto da trascinare
    	oggettiTrascinabili[i].onPress = function() {
    		delete this.onEnterFrame;//fermo il clip se si stava spostando
    		ordinaProfonditàOggettiTrascinati(oggettiTrascinabili, this);//porto l'oggetto cliccato in primo piano
    		this.onMouseMove = function() {
    			//cambio colore agli oggetti statici quando il mouse si muove
    			for (var j = 0; j<oggettiStatici.length; j++) {
    				if (distanza(oggettiStatici[j], this)<distanzaAggancio) {
    					oggettiStatici[j].colore.setRGB(0xFF0000);//rosso se sono vicino
    				} else {
    					oggettiStatici[j].colore.setRGB(0x000000);//nero se sono lontano
    				}
    			}
    		};
    		this.startDrag(false);//trascino
    	};
    	oggettiTrascinabili[i].onRelease = function() {
    		//quando rilascio il mouse
    		delete this.onMouseMove;//smetto di cambiare colore
    		for (var j = 0; j<oggettiStatici.length; j++) {
    			//controllo se un oggetto statico è vicino per agganciarlo
    			if (distanza(oggettiStatici[j], this)<distanzaAggancio) {
    				//sposto l'oggetto trascinabile nella posizione dell'oggetto statico agganciato
    				spostaLentamente(this, oggettiStatici[j]._x, oggettiStatici[j]._y);
    			}
    		}
    		this.stopDrag();//smetto di trascinare
    	};
    }
    
    //funzioni per disegnare
    function disegnaRiempimentoQuadrato(clip, lato, colore) {
    	with (clip) {
    		beginFill(colore, 100);
    		lineTo(0, lato);
    		lineTo(lato, lato);
    		lineTo(lato, 0);
    		lineTo(0, 0);
    		endFill();
    	}
    }
    function disegnaContornoQuadrato(clip, lato, colore) {
    	with (clip) {
    		lineStyle(0, colore, 100);
    		lineTo(0, lato);
    		lineTo(lato, lato);
    		lineTo(lato, 0);
    		lineTo(0, 0);
    		endFill();
    	}
    }
    
    //funzione per modificare profondità oggetti
    function ordinaProfonditàOggettiTrascinati(array, oggetto) {
    	swap = true;
    	while (swap) {
    		swap = false;
    		for (i=0; i<array.length; i++) {
    			if (oggetto.getDepth() == array[i].getDepth()-1) {
    				oggetto.swapDepths(array[i]);
    				swap = true;
    			}
    		}
    	}
    }
    
    //funzione per calcolare la distanza tra due clip
    function distanza(clip1, clip2) {
    	return Math.sqrt((clip1._x-clip2._x)*(clip1._x-clip2._x)+(clip1._y-clip2._y)*(clip1._y-clip2._y));
    }
    
    //funzione per spostare lentamente il clip in una posizione
    function spostaLentamente(clip, x, y) {
    	clip.onEnterFrame = function() {
    		this._x += (x-this._x)/2;
    		this._y += (y-this._y)/2;
    	};
    }
    [Il mio sito V2]
    ___________________
    I.m.The.Magic.Man

  5. #5

    ecco..

    guarda sei stato gentilissimo e ti ringrazio, ma io volevo proprio sapere come fare a modificare lo script.zip, anche perchè al posto dei quadratini devo mettere delle immagini, quindi mi serviva poter capire come aumentare i quadratini, che poi osstituirò con delle immagini...

  6. #6
    nello script che ti ho dato prova a riempire gli array con dei clip contenenti le tue immagini invece che con i quadrati.
    [Il mio sito V2]
    ___________________
    I.m.The.Magic.Man

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.