Jump to content
  • 0

анимация в javascript


spring555
 Share

Question

Мне требовалось сделать анимацию из трёх изображений,как я поняла их надо просто крутить по циклу.

По мимо этого анимация должна работать когда нажму на кнопку старт,когда нажимаю на стоп останавливаться.

На javascript пишу буквально день,опыта никакого.

Изображения в программе меняются сразу после загрузки страницы,тоесть не по нажатию старт,стоп тоже не работает,объясните пожалуйста как сделать чтобы толлько при нажатии на старт изображения менялись,а при нажатии стоп останавливались.


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
</head>
<script>
var delay = 1000
var imageNum = 1
var d=document

// Предварительная загрузка изображений анимации
var theImages = new Array()
for(i = 1; i <=3; i++) {
theImages[i] = new Image()
theImages[i].src = "img" + i + ".jpg"
}

function animate() {

d.animation.src = theImages[imageNum].src
imageNum++
if(imageNum >3) {
imageNum = 1
}



}

var idTimer=setTimeout('animate()', delay)//для остановки таймера
</SCRIPT>

<BODY BGCOLOR="white">

<IMG NAME="animation" SRC="img1.jpg" onload=" setTimeout('animate()', delay)" >
<FORM name="myform">
<input type="button" name="start" value="старт" />
<INPUT TYPE="button" Value="stop" name="stop1" onclick="clearTimeout(idTimer)" >
<INPUT TYPE="button" Value="Faster" onClick="faster()">
</FORM>

</BODY>

</html>

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Учите JS. Тут плохо всё. Да и HTML вам подучить надо, с ним тоже все ужасно.


var theImages = new Array() // старьё
var theImages = [] // так короче правда?

Элемент на странице надо искать не по имени, а по id. Ну и вообще много всего. Ну и <BODY BGCOLOR="white"> это просто :facepalmxd:

Link to comment
Share on other sites

  • 0

Не поняла момент по поводу поиска по id,кнопка старт работает,конечно способ у меня не лучший,но работает.стоп по прежнему не правильно(

Не могу разобраться как написать условие "если кнопка стоп нажата",вот такая конструкция

if(d.myform.stop1.click){}

не работает,видимо не правильно применяю

<script>
var delay = 1000
var imageNum = 1
var d=document

// Предварительная загрузка изображений анимации
var theImages = []
for(i = 1; i <=3; i++) {
theImages[i] = new Image()
theImages[i].src = "img" + i + ".jpg"
}

function animate() {


d.animation.src = theImages[imageNum].src
imageNum++
if(imageNum >3) {
imageNum = 1
}
setTimeout('animate()', delay);



}
function stoped() {
var id=setTimeout('animate', delay)
clearTimeout(id)
}

</SCRIPT>

<BODY >

<IMG NAME="animation" SRC="img1.jpg" >

<FORM name="myform">
<input type="button" name="start" value="старт" onClick=" setTimeout('animate()', delay)" />
<INPUT TYPE="button" Value="stop" name="stop1" onClick="stoped()" / >
</FORM>
</BODY>

</html>

Edited by spring555
Link to comment
Share on other sites

  • 0
Не поняла момент по поводу поиска по id

Я не вижу чтобы вы искали элемент по id.

Ссылка на таймаут должна храниться в глобальной переменной, которая видна обоим функциям.

Link to comment
Share on other sites

  • 0

Просто как только я не вертела idTime чтобы выполнить функцию clearTimeout ничего путнего не вышло

а если я функцию не много изменю таким образом,

как условие if описать чтобы смысл был такой if(кнопку стоп нажали) то остановить

function animate() {

var idTime=setTimeout('animate', delay)

if(myform.stop1.onclick==false)
{
alert('анимация приостоновлена')
clearTimeout(idTime)
}

else
{
d.animation.src = theImages[imageNum].src
imageNum++
if(imageNum >3)
{
imageNum = 1
}
setTimeout('animate()', delay);
}

}
кнопка старт переписана таким образом
<input type="button" name="start" value="старт" onClick=" animate()" />

Link to comment
Share on other sites

  • 0

я вынесла переменную в глобальные

всё получилось,спасибо большое


function animate() {

var cmd="animate()"
d.animation.src = theImages[imageNum].src
imageNum++
if(imageNum >3)
{
imageNum = 1
}
idTime=setTimeout('animate()', delay);

}

function stoped() {
clearTimeout(idTime)
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy