|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
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 |
|
|
|
|
|
#2 |
|
Senior Member
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! |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6659
|
Quote:
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
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
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! |
|
|
|
|
|
#5 | ||
|
Senior Member
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
|
Quote:
Guarda anche la controparte per i grafici, http://g.raphaeljs.com sopratutto questo esempio http://g.raphaeljs.com/dotchart.html Quote:
__________________
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. |
||
|
|
|
|
|
#6 | ||
|
Senior Member
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6659
|
Quote:
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:
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
|
||
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
|
Quote:
__________________
In a world without fences, who needs Gates? Power by: Fedora 8 - Mac OS X 10.4.11 |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Mi ci sto scontrando ultimamente. Ti farò sapere.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6659
|
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:
Bravo! Per me invece basta una comune funzione javascript: Codice PHP:
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
|
|
|
|
|
|
|
#11 |
|
Senior Member
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 |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6659
|
Quote:
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
|
|
|
|
|
|
|
#13 |
|
Senior Member
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>
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 |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6659
|
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
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Aug 2005
Città: Genova
Messaggi: 2285
|
Quote:
![]() 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 |
|
|
|
|
|
|
#17 |
|
Senior Member
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! |
|
|
|
|
|
#18 |
|
Senior Member
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>
";
?>
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 |
|
|
|
|
|
#19 |
|
Senior Member
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! |
|
|
|
|
|
#20 |
|
Senior Member
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 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:04.












HWU Rugby Group








