Bon alors j'ai avancé !!!!!!!!!!!!!!!
a. J'arrive à relier deux éléments ensemble. En traçant une ligne entre les deux ^^.
b. j'arrive à faire en sorte qu'on ne puisse pas relier deux éléments de la même colonne.
c. J'arrive à faire en sorte qu'on ne puisse relier plus d'un élément avec un autre.
d. j'arrive à générer un tableau de résultat.
Mais là je bloque .... j'ai un bug lorsque
1. je lie animal avec mouton
2. je lie Firefox avec navigateur
3. je lie OS avec mouton
Par contre si je fais :
1. je lie animal avec mouton
2. je lie Firefox avec navigateur
3. je lie OS avec navigateur
Tout se passe comme prévu !
var mouseX=0;
var mouseY=0;
var startX=0;
var startY=0;
var oPositionFirst='';
var currentMode='notLoaded';
var reponse = new Array();
reponse[0] = new Array();
var i = 0;
function getMouseXY(aEvent)
{
var myEvent = aEvent ? aEvent : window.event;
var target= myEvent.target ? myEvent.target : myEvent.srcElement;
if(myEvent.offsetX)
{
mouseX=myEvent.clientX+document.body.scrollLeft;
mouseY=myEvent.clientY+document.body.scrollTop;
}
else
{
mouseX=myEvent.pageX;
mouseY=myEvent.pageY;
}
}
function tryDrawLine(p_divClass)
{
if(currentMode=='firstPositionCaptured')
{
drawLine(startX,startY,mouseX,mouseY,document.getElementById('couleurSelector').value,document.getElementById('espacementSelector').value,'myDiv',p_divClass);
}
}
function captureClick(p_object)
{
oValue = p_object.value;
oPosition = p_object.accessKey;
if(oPosition != oPositionFirst)
{
oPositionFirst = oPosition;
if ($('div').hasClass(oValue)) {
$('.'+oValue).remove();
for (j = 0 ; j < reponse.length ; j++)
{
if (oValue==reponse[j][0]||oValue==reponse[j][1])
{
reponse[j][0] = reponse[reponse.length-1][0];
reponse[j][1] = reponse[reponse.length-1][1];
alert('['+j+'][0]=>'+reponse[j][0]+'['+j+'][1]=>'+reponse[j][1]);
reponse.pop();
i--;
}
}
}
if(currentMode=='noPositionDefined')
{
reponse[i] = new Array();
currentMode='firstPositionCaptured';
startX=mouseX;
startY=mouseY;
alert('reponse['+i+'][0] ='+oValue);
reponse[i][0] = oValue;
}
else
{
alert('reponse['+i+'][0] ='+oValue);
reponse[i][1] = oValue;
alert(reponse[i][1]);
tryDrawLine(reponse[i][0]+' '+reponse[i][1]);
currentMode='noPositionDefined';
i++;
oPositionFirst='';
}
}
else
{
currentMode='noPositionDefined';
oPositionFirst='';
reponse.pop();
}
}
function afficheResultat(){
for (j=0;j < reponse.length;j++){
alert('['+j+'][0]=>'+reponse[j][0]+'['+j+'][1]=>'+reponse[j][1]);
}
}
function drawLine(x1,y1,x2,y2,color,espacementPointille,divId,divClass)
{
if(espacementPointille<1) { espacementPointille=1; }
var lg=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
var nbPointCentraux=Math.ceil(lg/espacementPointille)-1;
var stepX=(x2-x1)/(nbPointCentraux+0);
var stepY=(y2-y1)/(nbPointCentraux+0);
var strNewPoints='';
for(var i=1 ; i<nbPointCentraux ; i++)
{
strNewPoints+='<div class="'+divClass+'" style="font-size:1px; width:1px; height:1px; background-color:'+color+'; position:absolute; top:'+Math.round(y1+i*stepY)+'px; left:'+Math.round(x1+i*stepX)+'px; "> </div>';
}
strNewPoints+='<div class="'+divClass+'" style="font-size:1px; width:3px; height:3px; background-color:'+color+'; position:absolute; top:'+(y1-1)+'px; left:'+(x1-1)+'px; "> </div>';
strNewPoints+='<div class="'+divClass+'" style="font-size:1px; width:3px; height:3px; background-color:'+color+'; position:absolute; top:'+(y2-1)+'px; left:'+(x2-1)+'px; "> </div>';
var myContainer=document.getElementById(divId);
myContainer.innerHTML= myContainer.innerHTML+ strNewPoints;
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Trac顤e ligne en javascript</title>
<script language="javascript" type="text/javascript" src="drawLine.js"></script>
<script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
</head>
<body onMouseMove="getMouseXY(event); " style="background-color:#6699CC;" onLoad="currentMode='noPositionDefined';">
<div id="myDiv" style="position:absolute; width: 0px; height: 0px; left: 0px; top: 0px; border: 1px none #000000;"></div>
Cliquez simplement pour choisir le point de d걡rt, puis d걬ac顬a sourie.
<p>Couleur
<select name="couleurSelector" id="couleurSelector">
<option value="red">red</option>
<option value="green">green</option>
<option value="blue">blue</option>
<option value="white" selected>white</option>
<option value="yellow">yellow</option>
<option value="black">black</option>
</select>
</p>
<p>Pointill鍊 <select name="espacementSelector" id="espacementSelector">
<option value="1">1px</option>
<option value="2">2px</option>
<option value="5" selected>5px</option>
<option value="10">10px</option>
<option value="20">20px</option>
<option value="50">50px</option>
</select>
</p>
<table>
<tr>
<td width="300px">
<button accessKey="gauche" type="button" value="Animal" onClick="captureClick(this);" >Animal</button>
</td>
<td>
<button accessKey="droite" type="button" value="Mouton" onClick="captureClick(this);" >Mouton</button>
</td>
</tr>
<tr>
<td>
<button accessKey="gauche" type="button" value="Firefox" onClick="captureClick(this);" >Firefox</button>
</td>
<td>
<button accessKey="droite" type="button" value="Navigateur" onClick="captureClick(this);" >Navigateur</button>
</td>
</tr>
<tr>
<td>
<button accessKey="gauche" type="button" value="OS" onClick="captureClick(this);" >OS</button>
</td>
<td>
<button accessKey="droite" type="button" value="Jeux" onClick="captureClick(this);" >Jeux</button>
</td>
</tr>
<tr>
<td>
<button accessKey="gauche" type="button" value="Starcraft" onClick="captureClick(this);" >Starcraft</button>
</td>
<td>
<button accessKey="droite" type="button" value="WinXP" onClick="captureClick(this);" >Win XP</button>
</td>
</tr>
</table>
<input type="button" onclick="afficheResultat()" value="afficheResultat"/>
<input type="button" onclick="alert(reponse.length);reponse.pop();alert(reponse.length);" value="pop"/>
</body>
</html>
Je vous en supplie aidez moi !!!! je suis vraiment pas loin....[/i][/i][/i][/i][/i][/i]