Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-05-2010, 12:06   #1
Dani88
Senior Member
 
L'Avatar di Dani88
 
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
[HTML 5] Creare un'immagine dinamica per selezionare i posti in un cinema cliccando

Avrei bisogno di creare un'immagine dinamica che riproduca la disposizione dei posti in una sala di un cinema e che permetta all'utente cliccando su un posto di sceglierlo.
Tale posto dovrebbe quindi cambiare colore al click e inoltre i posti già pieni dovrebbero anch'essi apparire di un colore diverso.
Avevo pensato ad html 5 viste le sue capacità, voi cosa mi consigliate?
__________________
Lego ™ Fans Club
Dani88 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2010, 12:26   #2
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Secondo me ti converrebbe fare il tutto con degli elementi separati, come in una tabella. Ogni "cella" rappresenterebbe un posto ed avrebbe l'uno o l'altro colore. Puoi anche usare delle immagini, in modo da far apparire bene il tutto.

Se proprio vuoi usare un <canvas>, allora devi disegnarlo a mano ed implementare un gestore per l'evento onmousedown (usa attachEvent su Internet Explorer ed addEventListener sugli altri!) e in base alle coordinate del click, poi, puoi scegliere cosa fare (prenotare il posto o altro).

ciao

EDIT: questo potrebbe tornarti utile se vuoi percorrere la seconda strada: https://developer.mozilla.org/en/HTML/Canvas
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2010, 13:44   #3
MaxArt
Senior Member
 
L'Avatar di MaxArt
 
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6659
Quote:
Originariamente inviato da Dani88 Guarda i messaggi
Avrei bisogno di creare un'immagine dinamica che riproduca la disposizione dei posti in una sala di un cinema e che permetta all'utente cliccando su un posto di sceglierlo.
Tale posto dovrebbe quindi cambiare colore al click e inoltre i posti già pieni dovrebbero anch'essi apparire di un colore diverso.
Avevo pensato ad html 5 viste le sue capacità, voi cosa mi consigliate?
No, rischi di complicarti le cose. E poi manca ancora il supporto di IE.

La sala del cinema come la rappresenti? Con una tabella rettangolare? Con una disposizione ad arco?
Io direi di provare col vetusto (dall'HTML 3.0 se non erro) ma efficente tag <map> ed i suoi figli <area>.
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
MaxArt è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2010, 13:47   #4
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da MaxArt Guarda i messaggi
E poi manca ancora il supporto di IE.
Vero, ma lo si può aggirare: http://excanvas.sourceforge.net/
In attesa che Microsoft muova il culo...
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2010, 13:49   #5
nico159
Senior Member
 
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
Quote:
Originariamente inviato da Dani88 Guarda i messaggi
Avrei bisogno di creare un'immagine dinamica che riproduca la disposizione dei posti in una sala di un cinema e che permetta all'utente cliccando su un posto di sceglierlo.
Tale posto dovrebbe quindi cambiare colore al click e inoltre i posti già pieni dovrebbero anch'essi apparire di un colore diverso.
Avevo pensato ad html 5 viste le sue capacità, voi cosa mi consigliate?
Va benissimo, puoi usare framework come http://raphaeljs.com che utilizza canavas su tutti i browser, a parte IE dove viene usato VML

Guarda anche la controparte per i grafici, http://g.raphaeljs.com sopratutto questo esempio http://g.raphaeljs.com/dotchart.html

Quote:
In attesa che Microsoft muova il culo...
IE9
__________________
In a world without fences, who needs Gates?
Power by: Fedora 8 - Mac OS X 10.4.11

Ultima modifica di nico159 : 15-05-2010 alle 14:01.
nico159 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2010, 13:57   #6
MaxArt
Senior Member
 
L'Avatar di MaxArt
 
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6659
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Vero, ma lo si può aggirare: http://excanvas.sourceforge.net/
In attesa che Microsoft muova il culo...
Lo muoverà con l'uscita di IE9, per ora nulla da fare.
C'è anche Chrome Frame per IE se si vogliono vedere i <canvas>.
Ma non toglie ancora che i semplici disegni vettoriali che si creano con lineTo, fillRect ed altre menate non sono facilmente trattabili. Ad esempio, come fai per gli eventi?

Quote:
Originariamente inviato da nico159 Guarda i messaggi
Va benissimo, puoi usare framework come http://raphaeljs.com che utilizza canavas su tutti i browser, a parte IE dove viene usato VML

Guarda anche la controparte per i grafici, http://g.raphaeljs.com sopratutto questo esempio http://g.raphaeljs.com/dotchart.html
Quello non è <canvas>, è un SVG generato dinamicamente.
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
MaxArt è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2010, 14:05   #7
nico159
Senior Member
 
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
Quote:
Quello non è <canvas>, è un SVG generato dinamicamente.
Sì hai ragione, scusate
__________________
In a world without fences, who needs Gates?
Power by: Fedora 8 - Mac OS X 10.4.11
nico159 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2010, 14:33   #8
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da MaxArt Guarda i messaggi
La sala del cinema come la rappresenti? Con una tabella rettangolare? Con una disposizione ad arco?
che?! tu hai mai visto un cinema coi posti disposti ad arco?
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2010, 14:42   #9
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da MaxArt Guarda i messaggi
Ad esempio, come fai per gli eventi?
Mi ci sto scontrando ultimamente. Ti farò sapere.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2010, 15:41   #10
MaxArt
Senior Member
 
L'Avatar di MaxArt
 
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6659
Quote:
Originariamente inviato da nico159 Guarda i messaggi
Sì hai ragione, scusate
Il che non vuol dire che non sia una buona idea, intendiamoci: sono tecnologie (SVG e VML) implementate in almeno il 98% dei browser su Internet.
Il VML poi ha anche la gestione degli eventi classica dell'HTML, mentre non ti so dire per i SVG. Di contro devono andare in modalità speciale, ma comunque non credo gliene importi.

Quote:
Originariamente inviato da fero86 Guarda i messaggi
che?! tu hai mai visto un cinema coi posti disposti ad arco?
Sì, se sono particolarmente capienti. O quantomeno non hanno la classica disposizione rettangolare, ma i posti laterali sono leggermente angolati verso il centro.

Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Mi ci sto scontrando ultimamente. Ti farò sapere.
Bravo!
Per me invece basta una comune funzione javascript:
Codice PHP:
function isInside(pointplist) {
    var 
lc=0i=0pop=plist[plist.length-1];
    for (; 
i<plist.lengthi++, op=p) {
        
p=plist[i];
        if ((
p.y>=point.&& op.y<point.y) || (p.y<point.&& op.y>=point.y))
            if ((
p.x>=point.&& op.x>point.x) || (p.x>point.&& op.x>=point.x)
                    || 
p.x+(point.y-p.y)*(op.x-p.x)/(op.y-p.y)>=point.xlc++;
    }
    return 
lc%2===1;

Questa prende un punto (oggetto con membri numerici x e y) e restituisce vero se è all'interno del poligono delimitato dall'array di punti plist (i punti devono essere in senso orario o antiorario, ovviamente non a casaccio).
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
MaxArt è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2010, 09:50   #11
Dani88
Senior Member
 
L'Avatar di Dani88
 
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
mhmmm dunque non ho capito molto la logica con cui dovrei farlo. Cioè io devo partire con un'img di base e costruirgli sopra una "griglia nascosta" che mi permetta di capire dove si clicca? Oppure devo proprio generare tutta l'img via codice?
__________________
Lego ™ Fans Club
Dani88 è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2010, 10:33   #12
MaxArt
Senior Member
 
L'Avatar di MaxArt
 
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6659
Quote:
Originariamente inviato da Dani88 Guarda i messaggi
mhmmm dunque non ho capito molto la logica con cui dovrei farlo. Cioè io devo partire con un'img di base e costruirgli sopra una "griglia nascosta" che mi permetta di capire dove si clicca? Oppure devo proprio generare tutta l'img via codice?
Generarla via codice puoi farlo, ma non sarà mai al 100% fedele. In questo caso puoi usare la funzione che ho scritto.
Se invece usi un'immagine fissa è meglio l'opzione della "griglia invisibile".
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
MaxArt è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2010, 12:54   #13
Dani88
Senior Member
 
L'Avatar di Dani88
 
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
dunque ho fatto una prova veloce:
Codice:
<html>  
<head>  
	<title>Canvas tutorial</title>  
	<script type="text/javascript">  
    function draw(){  
    	var seatDimension=30;
    	var startX=20;
    	var startY=30;
    	var column=0;
    	var row=0;
      var canvas = document.getElementById('prova');  
      if (canvas.getContext){  
	   var ctx = canvas.getContext('2d');  
	   // drawing code here
	   	while(column<400+startY){
	   		while(row<200+startX){
		         ctx.fillStyle = "rgb(200,0,0)";  
   	      	ctx.fillRect (column+startY,row+startX, seatDimension, seatDimension);
   	      	row+=seatDimension+10;
   	      }
   	      row=0;
   	     	column+=seatDimension+10;  
   		}
		} 
		else {  
   	// canvas-unsupported code here  
 		} 
	}  
	</script>  
	<style type="text/css">  
		canvas { border: 1px solid black;}  
	</style>  
</head>  
<body onload="draw();">  
	<canvas id="prova" width="600" height="600"></canvas>  
</body>  
</html>
ho usato quindi un canvas per disegnare dei quadrati di 30x30 distanziati di 10px.
Ma con la roba che disegno su canvas posso poi interagire?
O si tratta solo di disegno puro senza altre possibilità di interazione?
__________________
Lego ™ Fans Club
Dani88 è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2010, 13:18   #14
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Se proprio vuoi usare un <canvas>, allora devi disegnarlo a mano ed implementare un gestore per l'evento onmousedown (usa attachEvent su Internet Explorer ed addEventListener sugli altri!) e in base alle coordinate del click, poi, puoi scegliere cosa fare (prenotare il posto o altro).
.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2010, 13:25   #15
MaxArt
Senior Member
 
L'Avatar di MaxArt
 
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6659
Quote:
Originariamente inviato da Dani88 Guarda i messaggi
ho usato quindi un canvas per disegnare dei quadrati di 30x30 distanziati di 10px.
Io spero tanto che questo sia solo un abbozzo di quello che vuoi fare, perché per fare cose del genere usare <canvas> è eccessivo ed inutilmente complicato.
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
MaxArt è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2010, 14:15   #16
Dani88
Senior Member
 
L'Avatar di Dani88
 
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
Quote:
Originariamente inviato da MaxArt Guarda i messaggi
Io spero tanto che questo sia solo un abbozzo di quello che vuoi fare, perché per fare cose del genere usare <canvas> è eccessivo ed inutilmente complicato.
Si si ovviamente non voglio fare i posti con i quadratini avevo in mente una cosa del tipo:


Stavo rivalutando anche quanto suggerito da DanieleC88 di usare elementi separati. Potrei usare l'immagine di una poltrona singola (con colori diversi) replicata a seconda delle necessità.
A quel punto dovrebbe essere forse più semplice gestire gli eventi di click?
__________________
Lego ™ Fans Club
Dani88 è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2010, 15:46   #17
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Eh be' sì. A quel punto è solo un lavoro meccanico, ma è mooooolto più semplice. IMHO.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2010, 16:18   #18
Dani88
Senior Member
 
L'Avatar di Dani88
 
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
ho buttato giù una prova veloce col metodo da te consigliato:
Codice:
<style type="text/css">
table#disposizione_posti{
	cursor:pointer;
	border-collapse: separate;
	border-spacing:10px;
	}
	td {
		width:30px;
		height:30px;
		text-align:center;
		}
</style>

<script>
var counter=0;
var posti=new Array();
function mouseOut(e){
		//e.style.backgroundColor="green";
}

function selectSeat(e){
	if(document.getElementById(e).alt=="empty"){
		document.getElementById(e).alt="full"
		document.getElementById(e).src="full.gif";
		//alert(e);
		posti[e]=1;
		counter++;
	}
	else{
		document.getElementById(e).alt="empty"
		document.getElementById(e).src="empty.gif";
		posti[e]="";
		counter--;
	}
}

function showData(){
	var postiFinali=new Array();
	var a=0;
	for(i=0;i<posti.length;i++){
		if(posti[i]==1){
			postiFinali[a]=i+1;
			a++;
		}
	}			
	alert("Posti totali: "+counter+" i cui numeri sono:"+postiFinali.toString());
}

</script>
<?php
$index=0;
echo"<table id='disposizione_posti'><tr>
";
while($index<50){
	if($index%11==0 && $index!=0){
		echo"</tr><tr>";
	}
	else{
		echo "<td><img id='$index' onclick='selectSeat($index)' alt='empty' src='empty.gif' width='20px'>".($index+1)."</img></td>
		";
	}
	$index++;
}
echo"
	</table>
	<input type=button value='CLICCA QUI' onclick='showData()'></input>
";
?>
Il risultato è forse sufficiente per quello che mi serve...
Volevo sapere è possibile far comparire i numeri SOPRA le immagini dei posti? Per sopra intendo proprio dentro l'img..
Un'altra cosa, ora il controllo per vedere se un posto l'ho già selezionato io e volessi deselezionarlo lo faccio sull'attributo alt dell'immagine...mi sembra un po sporca come cosa però...avete da suggerirmi idee migliori?
__________________
Lego ™ Fans Club
Dani88 è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2010, 18:50   #19
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Potresti cambiare immagine a seconda della class a cui appartengono, e fare il controllo su quella.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 16-05-2010, 19:30   #20
Dani88
Senior Member
 
L'Avatar di Dani88
 
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
però ho un problemino...se ipotizziamo la sala del cinema non sia così squadrata ma abbia posti messi in maniera diversa, con corridoi, ecc... com faccio a gestirlo??
Sarebbe comodissimo poterla speficiare tipo in pixel la posizione...con un div che contiene le immagini e dando la posizione relativa ci riesco secondo te?
__________________
Lego ™ Fans Club
Dani88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
Sembra ormai certo: la prossima Xbox sar...
“Solutions Beyond Displays”: la strategi...
La società europea The Exploratio...
Dalle auto ai robot umanoidi: Faraday Fu...
Vodafone annuncia la dismissione di un s...
Stiga lancia i nuovi robot tagliaerba co...
Bullismo e cyberbullismo, Keenetic lanci...
Con AI Skills Checker Bitdefender mette ...
E-bike giapponese con 1.000 km di autono...
Un eVTOL con cui basta saper andare in b...
Dal mercato cinese al mondo: HONOR firma...
Sovranità digitale: l'UE sperimen...
Accesso alla memoria su Windows 11 solo ...
iPhone 18 Pro Max con batteria da oltre ...
Windows 11, cali di prestazioni sulle GP...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v