Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822

    zomma out ... mai va al centro!

    scusate, sto creando un mappa di una città, vorrei includere tutti gli strumenti necessari per zommare in, zoomare out, draggare ecc..
    per il drag problemoni non ce ne sono stati, ma per lo zoom:

    ho due semplicissimi bottoni, sullo zoom + ci sta codesto actionscript:

    on (release) {
    _root.map._xscale = _root.map._xscale +30;
    _root.map._yscale = _root.map._yscale +30;
    }


    sullo zoom - invece:
    on (release) {
    _root.map._xscale = _root.map._xscale -30;
    _root.map._yscale = _root.map._yscale -30;
    }

    il problema e che quando zoommo in zoomma ed è tutto ok, quando zoommo out (e prima ho draggato la mappa in un punto diverso dal suo centro) non mi mantiene il punto centrale ma si scala penso in base al suo punto di origine xy....

    come risolvo l'arcano?

    grazie a tutti ciauz!

  2. #2
    innanzitutto comincia ad usare la scrittura:

    _root.map._xscale += 30;

    che è molto + comoda di:

    _root.map._xscale = _root.map._xscale +30;

    ...a parte questo direi che devi tenere traccia in ogni momento della distanza del centro della mappa rispetto al centro dell'area visibile per fare una cosa tipo

    tu hai du mc, uno "mappa" e uno "area"...

    al che a mappa come action gli dai una cosa del tipo

    onClipEvent(enterFrame) {
    distx = _root.area._x - _x;
    disty = _root.area._y - _y;
    }

    poi al bottone per zoommare indietro innanzitutto non gli dai + un incremento, ma moltiplica per un fattore...

    _root.mappa._xscale*=0.75;

    questo perchè questo fattore almeno lo possiamo usare anche per calcolare la nuova distanza ovvero

    _root.mappa.targetdistx = _root.mappa.distx*0.75;
    _root.mappa.targetdisty = _root.mappa.disty*0.75;

    e poi lo posizioni in base alla nuova distanza che hai calcolato

    _root.mappa._x = _root.mappa.targetdistx;
    _root.mappa._y = _root.mappa.targetdisty;

    in questo modo se prima la mappa era centrata sulla città di Empoli, lo sarà ancora dopo la zoommata... quindi le azioni al bottone saranno:
    codice:
    on(release) {
    _root.mappa._xscale*=0.75;
    _root.mappa.targetdistx = _root.mappa.distx*0.75;
    _root.mappa.targetdisty = _root.mappa.disty*0.75;
    _root.mappa._x = _root.mappa.targetdistx;
    _root.mappa._y = _root.mappa.targetdisty;
    }
    e poi sarà il mc della mappa ad autocontrollarsi per non uscire rientrare oltre il bordo

    onClipEvent(enterFrame) {
    if(_x-_width/2<_root.area._x-_root.area._x/2) {
    //mettilo a posto bla bla bla...
    }

    l'ho buttato giù di getto qui e non l'ho provato, ma + o meno la teoria è questa (occhio che devi farlo anche per lo zoom in... perchè la prima volta tutto bene, ma anche con lo zoom in dopo averlo draggato un po' va tutto a quel paese

    ciauz
    "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)

  3. #3
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    mmm.....:master:

    esaudiente esaudiente....

    ora provo. GRAZIE!

  4. #4
    prego... al max comincia dal mio e sistemalo un po'... poi se ti serve una mano posta pure i progressi

    "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)

  5. #5
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    panta, me venuto fuori un casino....

    allora:

    per mc area cosa intendi? l'area dove ci deve star dentro la mappa?
    se si allora io ho creato la mappa (map), una maschera quadrata grande quanto è la grandezza iniziale di map.
    da questa maschera ne ho ricavato il bordo e ho creato un mc (area) in un livello separato dagli altri.

    questo per farti capire che elementi ho.

    sopra la clip "map" ho messo il seguente action:
    codice:
    onClipEvent (load){ 
    z=false 
    } 
    
    onClipEvent (enterFrame){ 
    if (z==true){ 
    startDrag(this) 
    } 
    } 
    
    onClipEvent (mouseDown){ 
    if (this.hitTest(_root._xmouse,_root._ymouse,true)){ 
    z=true 
    }} 
    onClipEvent (mouseUp){ 
    stopDrag() 
    z=false 
    }
    ora, ho creato due pulsanti per lo zoom + e zoom -
    ho capito il concetto ma in pratica mi viene fuori un casino.

    aggiungo come prima cosa il codice che determina l'area:
    codice:
    onClipEvent (load){ 
    z=false 
    } 
    
    onClipEvent (enterFrame){ 
    distx = _root.area._x - _x; 
    disty = _root.area._y - _y; 
    if (z==true){ 
    startDrag(this) 
    } 
    } 
    
    onClipEvent (mouseDown){ 
    if (this.hitTest(_root._xmouse,_root._ymouse,true)){ 
    z=true 
    }} 
    onClipEvent (mouseUp){ 
    stopDrag() 
    z=false 
    }
    ma sui bottoni che ci metto? scusami ma io ho provato a mettere quello che mi hai suggerito tu ma proprio non funzia, mi si comprime tutta la mamma e non centra un cavolo:master:


    help + dettagliato se puoi please! graz' !



  6. #6
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    Originariamente inviato da Base
    .. mi si comprime tutta la mamma e non la centra...
    scusa la mia mamma sta bene, volevo dire mappa!!:quote:

  7. #7
    MUAHAHAHHAHAHAHAHA.... già me l'immaginavo tua mamma tutta compressa!!! (dicevo: mah, le staranno molto a cuore i lavori del figlio) :gren:

    LOL

    cmq sia innanzitutto devi aggiungere i controlli alla mappa
    codice:
    if (_x - _width / 2 < _root.area._x - _root.area._width / 2) {
    	_x = _root.area._x - _root.area._width / 2 + _width / 2;
    }
    if (_y - _height / 2 < _root.area._y - _root.area._height / 2) {
    	_y = _root.area._y - _root.area._height / 2 + _height / 2;
    }
    if (_x + _width / 2 > _root.area._x + _root.area._width / 2) {
    	_x = _root.area._x + _root.area._width / 2 - _width / 2;
    }
    if (_y + _height / 2 > _root.area._y + _root.area._height / 2) {
    	_y = _root.area._y + _root.area._height / 2 - _height / 2;
    }
    per fare in modo che non finisca in mezzo all'area...

    (io avevo scritto un _x al posto di un _width)

    per il resto dammi un min...
    "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)

  8. #8
    ah no che scemo, ho messo i controlli al contrario... aspè che correggo
    "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)

  9. #9
    Utente di HTML.it L'avatar di Base
    Registrato dal
    Apr 2001
    Messaggi
    822
    quindi cosi...

    codice:
    onClipEvent (load){ 
    z=false 
    } 
    
    onClipEvent (enterFrame){ 
    
    if (_x - _width / 2 < _root.area._x - _root.area._width / 2) {
    	_x = _root.area._x - _root.area._width / 2 + _width / 2;
    }
    if (_y - _height / 2 < _root.area._y - _root.area._height / 2) {
    	_y = _root.area._y - _root.area._height / 2 + _height / 2;
    }
    if (_x + _width / 2 > _root.area._x + _root.area._width / 2) {
    	_x = _root.area._x + _root.area._width / 2 - _width / 2;
    }
    if (_y + _height / 2 > _root.area._y + _root.area._height / 2) {
    	_y = _root.area._y + _root.area._height / 2 - _height / 2;
    }
    
    if (z==true){ 
    startDrag(this) 
    } 
    } 
    
    onClipEvent (mouseDown){ 
    if (this.hitTest(_root._xmouse,_root._ymouse,true)){ 
    z=true 
    }} 
    onClipEvent (mouseUp){ 
    stopDrag() 
    z=false 
    }

  10. #10
    nono, aspè che arrivo (innanzitutto nei controlli bisogna invertore i > e i <)

    cmq dammi ancora un minutino
    "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.