Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет.указание_Web-программирование_ПОАС.doc
Скачиваний:
85
Добавлен:
26.02.2016
Размер:
548.86 Кб
Скачать

10.5. Текст, прилетающий по частям

Анимация, выглядящая как одновременное движение символов, образующих текстовую надпись.

<html lang="ru">

<head>

<title>Анимационные эффекты | Текст, прилетающий по частям</title>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<meta http-equiv="Content-Language" content="ru">

<style type="text/css">

<!--

BODY

{

background : white;

}

TABLE

{

width : 100%;

height : 100%;

}

#ID_ANIMATE

{

font : bold 16px "Times New Roman", serif;

}

#ID_ANIMATE SPAN

{

position : relative;

z-index : 1;

}

-->

</style>

</head>

<body>

<TABLE>

<TR>

<TD align="center" valign="middle">

<DIV ID="ID_ANIMATE"></DIV>

</TD>

</TR>

</TABLE>

<script type="text/javascript">

<!--

var nDevX = 300;

var nDevY = 300;

var strText = "Прилетающий по частям текст";

// --

var nCount = strText.length;

var oAnimate = document.getElementById("ID_ANIMATE");

var aoChars = new Array();

var nTimerID = null;

// --

function UpdateSpanPos(nNumber)

{

aoChars[nNumber].style.top = Math.round(aoChars[nNumber].m_fX).toString(10) + "px";

aoChars[nNumber].style.left = Math.round(aoChars[nNumber].m_fY).toString(10) + "px";

}

function OnTimer()

{

var bStop = true;

for(var i = 0; i < nCount; i++)

{

aoChars[i].m_fX += aoChars[i].m_fDX;

aoChars[i].m_fY += aoChars[i].m_fDY;

if( (Math.abs(aoChars[i].m_fX) < 1) &&

(Math.abs(aoChars[i].m_fY) < 1))

{

aoChars[i].m_fX = 0;

aoChars[i].m_fY = 0;

aoChars[i].m_fDX = 0;

aoChars[i].m_fDY = 0;

}

else

bStop = false;

UpdateSpanPos(i);

}

if(bStop)

window.clearInterval(nTimerID);

}

// --

for(var i = 0; i < nCount; i++)

{

var oSpan = document.createElement("SPAN");

oSpan.appendChild(document.createTextNode(strText.substring(i, i + 1)));

oAnimate.appendChild(oSpan);

aoChars[i] = oSpan;

aoChars[i].m_fX = Math.random() * 2 * nDevX - nDevX;

aoChars[i].m_fY = Math.random() * 2 * nDevY - nDevY;

aoChars[i].m_fDX = -aoChars[i].m_fX / nDevX;

aoChars[i].m_fDY = -aoChars[i].m_fY / nDevY;

UpdateSpanPos(i);

}

// --

nTimerID = window.setInterval(OnTimer, 20);

// -->

</script>

<noscript>

Внимание ! Ваш браузер не поддерживает выполнение скриптов, либо скрипты отключены.

</noscript>

</body>

</html> /17/.

10.6. Имитация движения текста по кругу в 3 d пространстве

Перспективное трехмерное изображение надписи

<html lang="ru">

<head>

<title>Анимационные эффекты | Имитация движения текста по кругу в 3D пространстве</title>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<meta http-equiv="Content-Language" content="ru">

<style type="text/css">

<!--

BODY

{

margin : 0px;

padding : 0px;

background : white;

}

DIV.header

{

margin : 0px;

padding : 0px;

height : 70px;

border : 1px solid #336699;

background : #CCCCCC;

}

#ID_ANIMATE

{

height : 1px;

}

#ID_ANIMATE SPAN

{

position : absolute;

font : bold 14px "Times New Roman", serif;

color : red;

cursor : default;

}

-->

</style>

</head>

<body>

<div class="header"></div>

<div ID="ID_ANIMATE"></div>

<script type="text/javascript">

<!--

var nXPos = 135;

var nYPos = 60;

var nWidth = 120;

var nHeight = 35;

var nFontSizeMin = 3;

var nFontSizeMax = 16;

var strText = 'JavaScrip ';

var fAlpha = 0.0;

var aoChars = new Array();

var nCount = strText.length;

var oAnimate = document.getElementById("ID_ANIMATE");

function OnTimer()

{

var dfAlpha = 360 / nCount;

for(var i = 0; i < nCount; i++)

{

var oSpan = aoChars[i];

var nTop = nYPos + nHeight * Math.sin(fAlpha - i * dfAlpha * Math.PI / 180);

oSpan.style.top = nTop;

oSpan.style.left = nXPos + nWidth * Math.cos(fAlpha - i * dfAlpha * Math.PI / 180);

oSpan.style.fontSize = ((nTop - nYPos + nHeight) / (2 * nHeight)) *

(nFontSizeMax - nFontSizeMin) + nFontSizeMin;

}

fAlpha += 0.02;

}

for(var i = 0; i < nCount; i++)

{

var oSpan = document.createElement("SPAN");

oSpan.appendChild(document.createTextNode(strText.substring(i, i + 1)));

oAnimate.appendChild(oSpan);

aoChars[i] = oSpan;

}

OnTimer();

window.setInterval(OnTimer, 40);

// -->

</script>

</body>

</html> /15/.