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

    drag drop senza intoppi

    ciao a tutti...
    ho tot mc sul mio stage... nel primo frame inserisco:

    mc.onPress = function(){
    this.x = this._x;
    this.y = this._y;
    this.startDrag(false);
    }
    mc.onRelease = function(){
    this._x = this.x;
    this._y = this.y;
    this.stopDrag();
    }
    mc1.onPress = function(){
    this.x = this._x;
    this.y = this._y;
    this.startDrag(false);
    }
    mc1.onRelease = function(){
    this._x = this.x;
    this._y = this.y;
    this.stopDrag();
    }

    e così via..........

    ma ovviamente quando uno dei miei mc va sull'altro si blocca....
    come posso ovviare al problema?

    ciao ciao

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao.

    Il problema è dovuto al fatto che l'evento onRelease avviene esclusivamente quando si rilascia il pulsante del mouse mentre il cursore si trova esattamente sull'istanza alla quale è assegnato tale evento.

    Se viene rilasciato il mouse quando il cursore si trova su un'altro pulsante, o al difuori del pulsante (o istanza) su cui abbiamo cliccato, l'evento che avviene è esattamente onReleaseOutside.

    Dovresti quindi associare questo evento alla stessa funzione dell'evento onRelease che hai già inserito.

    Ti consiglio inoltre di aggiungere, se non lo hai già fatto, la funzione updateAfterEvent all'interno di un evento onMouseMove, in modo che il refresh dello schermo sia sincronizzato col movimento del mouse e non relativo alla frequenza fotogrammi.
    In pratica, in questo modo, noterai più fluidità durante il trascinamento delle istanze.

    Ancora un'altra cosa.
    Potresti utilizzare il metodo swapDephts, che serve a cambiare l'ordine z delle istanze, indicando il valore più alto ogni volta che trascini un'istanza.
    Questo farà in modo di mantenere l'istanza trascinata sempre in primo piano rispetto a tutte le altre.

    Potresti inoltre snellire il tuo script con l'utilizzo di un ciclo for per assegnare le funzioni alle istanze in modo dinamico, così da non dover ripetere lo stesso script per ogni istanza, dato che hai scritto di avere diverse istanze...

    ... ma questo è un'altro discorso per ora ti posto lo script con le modifiche che ti ho descritto sopra.
    Le parti aggiunte le ho evidenziate in rosso.

    codice:
    mc.onPress = function() {
    	this.x = this._x;
    	this.y = this._y;
    	this.startDrag(false);
    	this.swapDepths(this._parent.getNextHighestDepth());
    };
    mc.onRelease = mc.onReleaseOutside=function () {
    	this._x = this.x;
    	this._y = this.y;
    	this.stopDrag();
    };
    mc1.onPress = function() {
    	this.x = this._x;
    	this.y = this._y;
    	this.startDrag(false);
    	this.swapDepths(this._parent.getNextHighestDepth());
    };
    mc1.onRelease = mc1.onReleaseOutside=function () {
    	this._x = this.x;
    	this._y = this.y;
    	this.stopDrag();
    };
    _root.onMouseMove = function() {
    	updateAfterEvent();
    };




    PS: è buona abitudine utilizzare i relativi tag di formattazione [ code ] [ /code] o [ php ] [ /php ] quando si posta dello script, in modo da rendere la discussione più pulita e facilmente comprensibile.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    grazie mille mille mille.....
    solo un'ultima cosa... metti che al centro dello stage abbia un rettangolo di 1000 per 700... e le mie istanze all'esterno... e volessi che queste istanze con il drag-drop possano muoversi lungo la parte esterna ma che nn possano entrare nel rettangolo centrale... come potrei procedere?

    grazie ancora


  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Scusa il ritardo...

    Se non hai già risolto, una soluzione potrebbe essere quella di utilizzare un hitTest per verificare quando il mc trascinato "tocca" col rettangolo (a sua volta trasformato in mc), e di conseguenza far avvenire lo stopDrag o altra azione a seconda di quello che vuoi che faccia il mc trascinato.

    Per il funzionamento dell'hitTest ti consiglio di fare qualche ricerca, troverai sicuramente varie discussioni.
    Altrimenti, se hai difficoltà, apri una nuova discussione con richieste specifiche su come vuoi che funzioni.

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.