Flash: pagina in movimento 1800x600

Di: fiorematt-design | 26/09/2020 18:34:16
ciao,
ho una curiosità.
Vorrei costruire una pagina in movimento, ossia una pagina che invece di essere il normale 800x600 (per esempio), sia un 1800x600 e possa così muovermi orizzontalmente con il movimento del mouse scoprendo il template mana a mano che mi sposto, una sorta di video gioco interattivo. es: www.custo-barcelona.com
qualcuno sa come si può dare quell'impostazione? (guardate quel sito) grazie

Risposte



Ciao Fiorematt,
puoi inserire tutto quello che ti serve dentro a un MovieClip e comandare il MovieClip stesso in base a come muovi il mouse.
Fai una prova: importa una immagine grande dentro Flash, convertila in MovieClip e dai un nome all’istanza (come ad esempio “sfondo”).
La puoi muovere in base alla posizione del mouse con uno script relativamente semplice come questo:
sfondo.onEnterFrame = function() {
this._x -= (_root._xmouse-Stage.width/2)/10;
this._y -= (_root._ymouse-Stage.height/2)/10;
};
Poi sta a te personalizzarlo, impostare dei limiti oltre i quali non muoverti inserendo delle condizioni “if”, decidere che il movimento sia solo orizzontale, o solo vericale, o che so io...
Buon lavoro.

Di: Professore | 26/09/2020 18:34:16


Grazie professore.
Ascolta, a proposito dei limiti di cui parli, in che modo posso bloccare lo sfondo da entrambi i lati della variabile “x”? Per esempio, in gergo corrente su di uno sfondo 1000x400 “quando il mouse arriva a mille o a zero fermati (o meglio non andare oltre)”: in che modo lo traduco nel linguaggio di action? E in più, non sapresti indicarmi un prontuario in commercio o, molto meglio, qualcosa che hai creato tu per imparare il linguaggio a partire dall’”alfabeto”? Il fatto che tu risolva i problemi è meraviglioso e sicuramente fa risparmiare molto tempo, ma il senso del dovere nel volere imparare e capire fa la sua parte; mi ritrovo a parlare l’ “actionscriano”, ma non conosco il suo alfabeto e la sua grammatica per comporre delle frasi mie. Mi puoi aiutare o suggerire? Grazie

Di: fiorematt-design | 26/09/2020 18:34:16


Ciao Fiorematt,
apprezzo moltissimo il fatto che tu voglia imparare, la differenza che c’è tra un normale utilizzatore di Flash e un professionista è solo un po’ di buona volontà.
Puoi diventare in breve tempo molto più bravo di me, che mi guardo bene dal definirmi professionista, ti servono solamente 55 euro e una libreria.
http://www.bol.it/libri/scheda/ea978880454161.html
Cliccando su questo link troverai la scheda di un libro, il prezzo è lo stesso anche in libreria, se compri dal sito ci saranno delle spese di spedizione e non puoi sfogliare il volume prima di decidere di comprarlo.
Se decidi di comprare online puoi passare da questo link:
http://tracker.tradedoubler.com/click?p=10388&a=971728&g=0
ti porterà sullo stesso sito, non cambierà niente per te, ma questo forum ne trarrà vantaggio.
Il libro è ben scritto, inizia dalle basi e affronta tutto l’ActionScript 2.0 nella teoria e nella pratica, guidandoti passo passo nella realizzazione di 40 progetti che ti insegneranno qualcosa di nuovo ogni volta.
Se ti eserciti un’ora al giorno e segui in ordine tutti i progetti del libro, in meno di un mese ne saprai più di me.
Il libro lo potrai tenere sulla scrivania per una pronta consultazione ogni volta che hai un dubbio e dopo qualche tempo, se usi spesso Flash, ti renderai conto che non hai più bisogno di consultarlo.
Quando poi sarà disponibile ActionScript 3 ne saprai già moltissimo sull’argomento, quindi non vorrai comprare un libro che ti guidi passo passo nella realizzazione di progetti che sarai in grado di realizzare da solo.
Penso che ti troverai ad acquistare un libro simile a questo:
http://www.bol.it/libri/scheda/ea978880453190.html
Costa meno, si tratta del dizionario che presenta tutti i comandi, in ordine alfabetico, e descrive tutti i possibili utilizzi di ognuno.
Possiedo questo libro e lo consulto spesso, quando uscirà per la versione 3.0 di ActionScript lo comprerò al volo.
Non lo consiglio come primo acquisto, anche se risparmiare 20 euro sembrerebbe una buona idea, perché per trovarti bene con questo libro dovresti sapere esattamente cosa cercare, è adatto a chi sa già a memoria la sintassi ma vuole conoscere nei minimi dettagli tutte le possibilità di ogni elemento.
Ora passiamo al blocco dello scorrimento...
La posizione _x del tuo MovieClip dipende dal punto di registrazione del MovieClip stesso, io presuppongo che il punto di registrazione si trovi nell'angolo in alto a sinistra, così che quando il MovieClip si trova a coordinate 0,0 il suo punto in alto a sinistra corrisponde con il punto in alto a sinistra dello Stage.
Quando il MovieClip si muove non deve mai superare 0, altrimenti lo vediamo “fuggire” verso destra e lasciare uno spazio vuoto alla sua sinistra.
Allo stesso modo, quando il MovieClip si muove verso sinistra la sua posizione _x non deve mai andare oltre un certo limite, altrimenti scompare lasciando uno spazio vuoto a destra.
Quali sono questi limiti che non dobbiamo sperare allora?
Uno dei due limiti lo sappiamo, è zero.
L’altro limite è uguale alla larghezza del MovieClip meno la larghezza del nostro Stage, ed è un numero negativo.
Si tratta di un numero negativo perché il MovieCLip deve scorrere verso sinistra, quindi la sua posizione si troverà alla sinistra del punto zero dello Stage.
Bisogna fare la sottrazione perché se il MovieClip, largo 1000 pixel, si trovasse a -1000 sarebbe già fuori dallo Stage e il suo limite destro coinciderebbe con il limite sinistro dello Stage. Noi vogliamo che, al massimo, il suo limite destro coincida con il limite destro dello Stage, quindi il valore massimo è:
-((larghezza del MovieClip)-(larghezza dello Stage))
Lo scriviamo in ActionScript:
-(this._width-Stage.width)
Adesso che abbiamo i limiti vediamo di trovare il valore di offset, ovvero il numero di pixel da usare per spostare il MovieClip.
Nell’esempio del post precedente ho usato _xmouse che è una comodissima proprietà che ci dice la coordinata _x del Mouse.
A questo valore sottraggo la metà della larghezza dello Stage, in questo modo ottengo un numero più alto a destra e a sinistra e un numero più piccolo al centro.
Inoltre il numero sarà negativo nella metà sinistra dello Stage e sarà positivo nella metà destra.
Apro un nuovo documento Flash, inserisco questo script e nient’altro:
onEnterFrame = function () {
trace(_root._xmouse-Stage.width/2);
};
Ottengo che la finestra di dialogo mi dice i numeri che vengono restituiti dalla funzione.
Posso constatare che se riesco a trovare il centro il numero è zero e che aumenta progressivamente se sposto il mouse a destra e a sinistra.
Ma non sono soddisfatto: il mio Stage è ben grande e i miei numeri vanno da -275 a 274... sono numeri troppo alti, se facessi spostare il mio sfondo di 275 pixel l’effetto finale sarebbe disastroso, quindi decido di dividere questo valore per 10, cambio lo script di prima per vedere che valori sto generando:
onEnterFrame = function () {
trace((_root._xmouse-Stage.width/2)/10);
};
Ho dei valori che variano da -27.5 a 27.4, mi soddisfano abbastanza, userò questi.
Posso chiudere il filmato di prova senza salvarlo, mi serviva solo per leggere le coordinate.
Allora... ho tutto, non mi rimane che mettere insieme le cose, quindi apro il filmato vero.
- Userò onEnterFrame.
- Per prima cosa sposterò il MovieClip in base al valore che ottengo con il calcolo di prima.
- Poi controllo di non essere andato oltre il valore di zero, se ho sforato riporto a zero la coordinata _x
- Se non ho oltrepassato lo zero controllo anche l’altro limite, se sono andato troppo oltre aggiusto la coordinata.
Non dovrebbe servire altro.
Ecco il risultato finale:
sfondo.onEnterFrame = function() {
this._x -= (_root._xmouse-Stage.width/2)/10;
if (this._x>0) {
this._x = 0;
} else if (this._x<-(this._width-Stage.width)) {
this._x = -(this._width-Stage.width);
}
};
Funziona davvero!
Che soddisfazione!!!
Purtroppo non c’è quasi mai il tempo di scrivere il perché di ogni riga di codice, anche quando le righe sono veramente poche come in questo caso.
Quando tutto ti sarà più chiaro ti accorgerai che fai gli stessi ragionamenti descritti in questa spiegazione, ed essendo molto più facile da fare che da spiegare, quando un amico ti chiederà “come si fa?” sarai più propenso a mostrarglielo che a spiegarlo.
Ciao.

Di: Professore | 26/09/2020 18:34:16


grazie professore,
ho già seguito il tuo consiglio e ho prenotato il libro. Ma nell'attesa dimmi: dai un'occhiata al sito www.bershka.es : come è possibile relaizzare più schermate su di uno steso sfondo e riuscire a muoversi in orizzontale lunfo lo sfondo come se passasimo ad un'altro frame o un'altra pagina? grazie

Di: fiorematt-design | 26/09/2020 18:35:16