| ·¹ÀÌ¾î »ç¼±À¸·Î À̵¿½Ã۱â | Go to ·¹À̾îÀ̵¿ |
| »ç¼±À¸·Î À̵¿Çϱâ 2 | |
| »ç¼±À¸·Î À̵¿Çϱâ 3 (1013) | |
left¿Í topÀÇ °ªÀÌ °°Áö¾ÊÀ» ¶§ Çѹø À̵¿ÇÒ left¿Í top°ªÀ» ±¸ÇÒ·Á¸é ÇÑ °¡Áö¸¦ ÁÖÀÇÇØ¾ßÇÕ´Ï´Ù. nn4¿Í ie4¿¡¼ ·¹À̾ À̵¿½Ãų ¼ö ÀÖ´Â ÃÖ¼Ò°ªÀº nn4´Â 0.5À̰í ie4´Â 1ÀÔ´Ï´Ù. nn4´Â 0.5ÀÌ»óÀÇ °ªÀº ¹Ý¿Ã¸²À» ÇÏ¿© 1px¸¦ À̵¿ÇÕ´Ï´Ù. 2.4´Â 2px¸¦ À̵¿ÇÕ´Ï´Ù. ie4´Â 0.9 ÀÌÇÏ´Â À̵¿ÇÏÁö ¾Ê½À´Ï´Ù.
·¹À̾ ¿À¸¥ÂÊÀ¸·Î 300, ¾Æ·¡·Î 100px À̵¿½Ãų·Á¸é left¿¡°Ô 300, top¿¡°Ô 100À» ´õÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. À̰ÍÀ» ºÎµå·´°Ô À̵¿½Ã۱â À§Çؼ left¿Í topÀÇ Çѹø À̵¿°ªÀ» 3´ë1·Î left¿Í topÀÇ °ªÀ» Áõ°¡ ½ÃÄÑÁÖ¾î¾ß ÇÕ´Ï´Ù. leftÀÇ Çѹø À̵¿°ªÀ» 1·Î ÁÖ¸é °¡Àå ºÎµå·´°Ô À̵¿½Ã۱â À§Çؼ topÀÇ Áõ°¡°ªÀº 0.333333333.... ÀÌ °¡Àå Á¤È®ÇÑ ºñÀ²ÀÇ °ªÀÌ µË´Ï´Ù. ÇÏÁö¸¸, nn4´Â 0.4 ÀÌÇÏÀÇ °ªÀº ¹Ý¿Ã¸²¿¡¼ ¹Ý¿µµÇÁö ¾Ê°í ie4´Â 0.9ÀÌÇÏÀÇ °ªÀº ¹Ý¿µÇÏÁö ¾Ê½À´Ï´Ù. leftÀÇ Áõ°¡°ª 1, topÀÇ Áõ°¡°ª 0.3333À¸·Î ·¹À̾ À̵¿½ÃŰ¸é ¿ÞÂÊÀ¸·Î´Â Áõ°¡ÇÏ¿© À̵¿ÇÏÁö¸¸, ¾Æ·¡ÂÊÀ¸·Î´Â topÀÇ °ªÀÌ ¹Ý¿µÀÌ µÇÁö¾Ê¾Æ À̵¿ÇÏÁö ¾Ê½À´Ï´Ù. ·¹À̾î À̵¿ÀÌ ³¡³ª¸é ÁÂÇ¥´Â left=¿ø·¡ left ÁÂÇ¥°ª+300, top=¿ø·¡ topÁÂÇ¥°ª + 0ÀÌ µË´Ï´Ù.
ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ´Â ÃÖ¼Ò À̵¿°ªÀ» 1·ÎÁÖ°í À̵¿ÆøÀÌ Å« ÁÂÇ¥°ªÀ¸·Î 2, 3, 4ÀÇ ¼Ò¼ýÁ¡À» °¡ÁöÁö ¾Ê´Â ÁÂÇ¥°ªÀ» ÁöÁ¤ÇÏ¸é µÇÁö¸¸, À̰ÍÀº ·¹À̾îÀ̵¿À» ÇÒ¶§ ÀÏÀÏÀÌ À̵¿°ªÀ» ÁöÁ¤ÇؾßÇϰí left¿Í topÀÇ ºñÀ²ÀÌ 2´ë1ÀÌÇϳª 1.5´ë1 2.5´ë1 µî ¼Ò¼ýÁ¡À» °¡Áö´Â ºñÀ²ÀÇ À̵¿ÁÂÇ¥¿¡´Â Á¤È®ÇÑ ÁÂÇ¥·Î À̵¿À» ÇÒ ¼ö ¾ø½À´Ï´Ù. Áï À̵¿À» ½Ãų ¼ö ÀÖ´Â Å©±âÀÇ ÁÂÇ¥°¡ Á¦ÇÑÀÌ µÇ°í À̵¿°ªÀÌ 1·Î Á¦ÇÑÀÌ µÇ¾î¼ ·¹À̾ 1ÀÌÇÏÀÇ ¹Ì¼¼ÇÑ À̵¿Àº ÇÒ ¼ö ¾ø½À´Ï´Ù.
±×·¡¼ À̵¿°ªÀÌ Å« left³ª topÀÇ ÁÂÇ¥¿¡ ÃÖ¼ÒÀÇ À̵¿°ª 1À» ÁöÁ¤Çϰí ÀÛÀº ÁÂÇ¥ÀÇ °ª¿¡ Å« ÁÂÇ¥ÀÇ °ªÀ» ³ª´©¾î ÁÖ¸é ÀÛÀº ÁÂÇ¥ÀÇ À̵¿°ªÀÌ 1 º¸´Ù ÀÛÀº ¼Ò¼ýÁ¡ÀÇ ÁÂÇ¥°¡ ³ª¿É´Ï´Ù. 1°ú ¼Ò¼ýÁ¡ÀÇ À̵¿°ªÀ» À̵¿½ÃÄÑ¾ß ÇÕ´Ï´Ù.
leftÀÇ Áõ°¡°ª 1 topÀÇ Áõ°¡°ªÀÌ 0.333...ÀÎ left:300, top:100ÀÇ 3´ë1 À̵¿°ªÀ» °¡Áö´Â ·¹À̾ À̵¿½Ã۱â À§Çؼ topÀÇ Áõ°¡°ª¿¡ ¼Ò¼ýÁ¡ ÀÌÇÏÀÇ 3333...À» Çѹø À̵¿½Ã¿¡ ÀúÀåÀ» Çϰí 1ÀÌ ³ÑÀ¸¸é ±×¶§ ±× °ªÀ» ÁöÁ¤ÇÏ°í ´Ù½Ã ÀúÀåµÈ °ª¿¡¼ 1ÀÌ ³Ñ´Â ¼Ò¼ýÁ¡ À§ÀÇ Á¤¼ö°ªÀ» »©ÁÝ´Ï´Ù. ±×·¯¸é °ÅÀÇ 3´ë1ÀÇ ºñÀ²·Î ·¹À̾ À̵¿À» ÇÕ´Ï´Ù. Çѹø À̵¿¶§¸¶´Ù »ý±â´Â ¼Ò¼ýÁ¡ ÀÌÇÏÀÇ °ªÀ» ¹ö¸®Áö ¾Ê´Â °ÍÀÔ´Ï´Ù.
function init() {
if(n4) {
oblLayer = new Array()
oblLayer[0] = 1 //À̵¿½Ã°£
oblLayer[1] = new obliqueSet(document.D1, 400, 0, 4)
}
else if(e4) {
oblLayer = new Array()
oblLayer[0] = 1
oblLayer[1] = new obliqueSet(document.all.D1, 400, 0, 4)
}
moveOblique();
}
--
<div id=D1 style="position:absolute; left:100; top:100; width:100">...</div>
·Î leftÀÇ ÁÂÇ¥°ª 0px, topÀÇ ÁÂÇ¥°ª 100pxÀÎ D1 ·¹À̾ left 400px top 0px·Î Áõ°¡°ªÀÎ 400, 100¸¸Å
400´ë 100ÀÇ ºñÀ²·Î Çѹø À̵¿½ÃÀÇ ¼ÓµµÀÇ 4¹è¼Óµµ·Î À̵¿½Ã۶ó°í ÁöÁ¤ÇÕ´Ï´Ù.
function obliqueSet(layer, leftTo, topTo, shift) {
this.layer=layer
this.leftBit=getBit(layer, leftTo, topTo, "left")
this.topBit=getBit(layer, leftTo, topTo, "top")
this.leftPom=getBit(layer, leftTo, topTo, "leftPom")
this.topPom=getBit(layer, leftTo, topTo, "topPom")
this.moveLeftTo = leftTo
this.moveTopTo = topTo
this.moveLeftBit = this.leftBit * shift
this.moveTopBit = this.topBit * shift
this.overOneLeft=0
this.overOneTop=0
}
·Î »ç¼±À¸·Î ·¹À̾ À̵¿½ÃŰ´Â °ÍÀÇ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â oblLayer¿¡°Ô ÁöÁ¤À» ÇÕ´Ï´Ù.
this.leftBit, this.topBit°¡ À̵¿ ÁÂÇ¥°ª¿¡ µû¸¥ À̵¿ ºñÀ²À» °¡Áý´Ï´Ù.
À̰ÍÀ» ÇÏ´Â ÇÔ¼ö´Â getBit()ÀÔ´Ï´Ù.
function getBit(layer, leftTo, topTo, leftOrTop) {
//·¹À̾îÀÇ À̵¿¾çÀ» 1ÀÌÇÏÀÇ ¼ýÀÚ·Î ³ª´©¾î ¹ÝȯÇÔ.
var bitL=bitT=null
var flagLeft=flagTop=1
if(n4) {
bitL = leftTo-layer.left
bitT = topTo-layer.top
}
else if(e4) {
bitL = leftTo-layer.style.pixelLeft
bitT = topTo-layer.style.pixelTop
}
if(bitL<0) flagLeft = -1
if(bitT<0) flagTop = -1
bitL = Math.abs(bitL)
bitT = Math.abs(bitT)
if(bitL>bitT) { bitT /= bitL; bitL /= bitL; }
else { bitL /= bitT; bitT /= bitT; }
if(leftOrTop == "left") return bitL*flagLeft
else if(leftOrTop == "top") return bitT*flagTop
else if(leftOrTop == "leftPom") return flagLeft
else if(leftOrTop == "topPom") return flagTop
}
·Î ·¹À̾îÀÇ ÁÂÇ¥¿Í À̵¿ÇÒ ÁöÁ¡±îÁöÀÇ ÁÂÇ¥°ª¿¡ µû¸¥ ºñÀ²°ú À̵¿¹æÇâÀ» ¾ò½À´Ï´Ù.
±×¸®°í ³ª¼ ·¹ÀÌ¾î »ç¼±À¸·Î À̵¿½ÃŰ´Â moveOblique();¸¦ ½ÇÇàÇÕ´Ï´Ù.
leftAllMoved=topAllMoved=1 //°¢ ·¹À̾ ´Ù À̵¿Çß´ÂÁö ÆÇ´ÜÇÔ.
function moveOblique() {
if(n4) {
var i=1, tempL=tempT=0
for( ; i < oblLayer.length; i++ ) { // && !oblLayer[i].moved
oblLayer[i].overOneLeft += oblLayer[i].moveLeftBit
oblLayer[i].overOneTop += oblLayer[i].moveTopBit
tempL = Math.floor(oblLayer[i].overOneLeft)
tempT = Math.floor(oblLayer[i].overOneTop)
oblLayer[i].overOneLeft -= tempL
oblLayer[i].overOneTop -= tempT
if( oblLayer[i].layer.left < oblLayer[i].moveLeftTo - (tempL*oblLayer[i].leftPom)) {
oblLayer[i].layer.left += tempL
}
else if( oblLayer[i].layer.left < oblLayer[i].moveLeftTo) {
while( oblLayer[i].layer.left > oblLayer[i].moveLeftTo - tempL )
tempL--
oblLayer[i].layer.left += tempL
}
else if( oblLayer[i].layer.left > oblLayer[i].moveLeftTo + (tempL*oblLayer[i].leftPom)) {
oblLayer[i].layer.left += tempL
}
else if( oblLayer[i].layer.left > oblLayer[i].moveLeftTo) {
while( oblLayer[i].layer.left < oblLayer[i].moveLeftTo - tempL )
tempL++;
oblLayer[i].layer.left += tempL
}
else if( !oblLayer[i].leftMoved) {
oblLayer[i].leftMoved = true
leftAllMoved++
}
if( oblLayer[i].layer.top < oblLayer[i].moveTopTo - (tempT*oblLayer[i].topPom)) {
oblLayer[i].layer.top += tempT
}
else if( oblLayer[i].layer.top < oblLayer[i].moveTopTo) {
while( oblLayer[i].layer.top > oblLayer[i].moveTopTo - tempT )
tempT--
oblLayer[i].layer.top += tempT
}
else if( oblLayer[i].layer.top > oblLayer[i].moveTopTo + (tempT*oblLayer[i].topPom)) {
oblLayer[i].layer.top += tempT
}
else if( oblLayer[i].layer.top > oblLayer[i].moveTopTo) {
while( oblLayer[i].layer.top < oblLayer[i].moveTopTo - tempT )
tempT++;
oblLayer[i].layer.top += tempT
}
else if( !oblLayer[i].topMoved) {
oblLayer[i].topMoved = true
topAllMoved++
}
}
}
else if(e4) {
var i=1, tempL=tempT=0
for( ; i < oblLayer.length; i++ ) {
oblLayer[i].overOneLeft += oblLayer[i].moveLeftBit
oblLayer[i].overOneTop += oblLayer[i].moveTopBit
tempL = Math.floor(oblLayer[i].overOneLeft)
tempT = Math.floor(oblLayer[i].overOneTop)
oblLayer[i].overOneLeft -= tempL
oblLayer[i].overOneTop -= tempT
if( oblLayer[i].layer.style.pixelLeft < oblLayer[i].moveLeftTo - (tempL*oblLayer[i].leftPom)) {
oblLayer[i].layer.style.pixelLeft += tempL
}
else if( oblLayer[i].layer.style.pixelLeft < oblLayer[i].moveLeftTo) {
while( oblLayer[i].layer.style.pixelLeft > oblLayer[i].moveLeftTo - tempL )
tempL--
oblLayer[i].layer.style.pixelLeft += tempL
}
else if( oblLayer[i].layer.style.pixelLeft > oblLayer[i].moveLeftTo + (tempL*oblLayer[i].leftPom)) {
oblLayer[i].layer.style.pixelLeft += tempL
}
else if( oblLayer[i].layer.style.pixelLeft > oblLayer[i].moveLeftTo) {
while( oblLayer[i].layer.style.pixelLeft < oblLayer[i].moveLeftTo - tempL )
tempL++;
oblLayer[i].layer.style.pixelLeft += tempL
}
else if( !oblLayer[i].leftMoved) {
oblLayer[i].leftMoved = true
leftAllMoved++
}
if( oblLayer[i].layer.style.pixelTop < oblLayer[i].moveTopTo - (tempT*oblLayer[i].topPom)) {
oblLayer[i].layer.style.pixelTop += tempT
}
else if( oblLayer[i].layer.style.pixelTop < oblLayer[i].moveTopTo) {
while( oblLayer[i].layer.style.pixelTop > oblLayer[i].moveTopTo - tempT )
tempT--
oblLayer[i].layer.style.pixelTop += tempT
}
else if( oblLayer[i].layer.style.pixelTop > oblLayer[i].moveTopTo + (tempT*oblLayer[i].topPom)) {
oblLayer[i].layer.style.pixelTop += tempT
}
else if( oblLayer[i].layer.style.pixelTop > oblLayer[i].moveTopTo) {
while( oblLayer[i].layer.style.pixelTop < oblLayer[i].moveTopTo - tempT )
tempT++;
oblLayer[i].layer.style.pixelTop += tempT
}
else if( !oblLayer[i].topMoved) {
oblLayer[i].topMoved = true
topAllMoved++
}
}
}
if(leftAllMoved < oblLayer.length || topAllMoved < oblLayer.length)
moveOblique_ID = setTimeout("clearTimeout(moveOblique_ID); moveOblique()", oblLayer[0])
else {
leftAllMoved=1
topAllMoved=1
alert("À̵¿³¡")
}
}
·¹À̾ »ç¼±À¸·Î À̵¿ÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù. À§ÀÇ ±½Àº ±ÛÀÚµéÀº ¸ðµç ·¹À̾ À̵¿À» Á¾·áÇßÀ» ¶§ setTimeout()ÀÇ È£ÃâÀ» ¸ØÃß°í
´ÙÀ½ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. ÀÌ »ç¼±À¸·Î À̵¿Çϱ⸦ »ç¿ëÇϸé Á÷¼±À¸·Î º¸³¾°÷ÀÇ ÁÂÇ¥°¡ Á÷¼±ÀÎÁö »ç¼±ÀÎÁö »ó°ü¾øÀÌ
µÑ ´Ù º¸³¾ ¼ö ÀÖ½À´Ï´Ù.