Форум программистов, компьютерный форум, киберфорум
JavaScript: HTML5 Canvas
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 9
1

Передать переменную для анимации canvas

05.10.2011, 12:02. Показов 3254. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите пожалуйста!
у меня есть код:
Javascript
1
2
3
4
5
6
7
8
        var date = new Date();
        function gagaga(){
            setInterval(draw, 1000)
        }
        function draw(){
            ctx.clearRect(0, 0, 500, 500);
            ctx.fillText(date, 100, 100)
        }
и главная задача - переменную date не писать внутрь функции draw, как переменную передать так, чтоб она осталась на том же месте где сейчас и draw каждую секунду брала новую дату?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2011, 12:02
Ответы с готовыми решениями:

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

Как передать переменную окна через текстовую переменную?
Открыл одно окно, потом второе, и хочу передать индетефикатор первого окна во второе, чтобы оно там...

Передать переменную
Надо передать переменную из одной функции в другую. Но есть определённая специфика вызова этих...

Передать переменную
Необходимо из main.js передать в php переменную "TotalScore" ...

17
93 / 93 / 9
Регистрация: 20.02.2011
Сообщений: 210
05.10.2011, 12:24 2
Цитата Сообщение от zhukovka Посмотреть сообщение
и главная задача - переменную date не писать внутрь функции draw, как переменную передать так, чтоб она осталась на том же месте где сейчас и draw каждую секунду брала новую дату?
Javascript
1
2
3
4
5
6
7
8
9
        var date;
        function gagaga(){
date = new Date();
            setInterval(draw, 1000)
        }
        function draw(){
            ctx.clearRect(0, 0, 500, 500);
            ctx.fillText(date, 100, 100)
        }
при каждом вызове gagaga будет браться дата
0
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 9
05.10.2011, 12:27  [ТС] 3
пробовала - не работает
0
93 / 93 / 9
Регистрация: 20.02.2011
Сообщений: 210
05.10.2011, 12:31 4
у вас джаваскрипт где подключается в head или по ходу пьесы?
если в head то должно работать, при загрузке страницы инициализируется переменная

попробуйте в draw вывести alert(date);
че напишет
0
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 9
05.10.2011, 12:35  [ТС] 5
если я засуну скрипт в head он не будет вынимать канву, потому он у меня после всего
он берет дату, но не берет ее снова и снова новую каждую секунду
0
93 / 93 / 9
Регистрация: 20.02.2011
Сообщений: 210
05.10.2011, 12:40 6
пропиши в head
Javascript
1
2
3
<script language='javascript'>
var date;
</script>
может заработает
из нижнего скрипта удали соответственно эту строку чтобы не переинициализировались переменные
0
front-end developer
284 / 275 / 39
Регистрация: 31.08.2010
Сообщений: 577
Записей в блоге: 1
05.10.2011, 12:47 7
Так, к слову:

Цитата Сообщение от djdish Посмотреть сообщение
<script language='javascript'>
Не используется, используется:

HTML5
1
<script type='text/javascript'>
0
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 9
05.10.2011, 12:50  [ТС] 8
Цитата Сообщение от djdish Посмотреть сообщение
пропиши в head
Javascript
1
2
3
<script language='javascript'>
var date;
</script>
может заработает
из нижнего скрипта удали соответственно эту строку чтобы не переинициализировались переменные
не заработало(
0
93 / 93 / 9
Регистрация: 20.02.2011
Сообщений: 210
05.10.2011, 12:55 9
тогда полный html страницы в студию
0
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 9
05.10.2011, 12:57  [ТС] 10
Цитата Сообщение от djdish Посмотреть сообщение
тогда полный html страницы в студию
вообще, ничего кроме этого скрипта в странице нет, но вот он
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>21</title>
        <script>date = new Date();</script>
    </head>
    <body>
        <canvas id="canvas" width="500" height="500">
    </body>
    <script>
        var ctx = document.getElementById('canvas').getContext('2d');
 
        function gagaga(){
            setInterval(drawString, 1000)
        }
 
        function drawString(){
            ctx.clearRect(0, 0, 500, 500);
            ctx.fillText(date, 100, 100)
        }
    </script>
</html>
0
front-end developer
284 / 275 / 39
Регистрация: 31.08.2010
Сообщений: 577
Записей в блоге: 1
05.10.2011, 13:01 11
А с чего этот код должен каждый раз показывать новую дату?
Javascript
1
2
3
4
5
6
7
8
var date = new Date();
  function gagaga(){
    setInterval(draw, 1000)
  }
  function draw(){
    ctx.clearRect(0, 0, 500, 500);
    ctx.fillText(date, 100, 100)
  }
Текущая дата устанавливается один раз в:
Javascript
1
var date = new Date();
Чтобы она генерировалась при каждом запуске draw:
Javascript
1
2
3
4
5
function draw(){
    var date = new Date();
    ctx.clearRect(0, 0, 500, 500);
    ctx.fillText(date, 100, 100)
  }
0
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 9
05.10.2011, 13:11  [ТС] 12
Цитата Сообщение от Vicont Посмотреть сообщение
А с чего этот код должен каждый раз показывать новую дату?
Javascript
1
2
3
4
5
6
7
8
var date = new Date();
  function gagaga(){
    setInterval(draw, 1000)
  }
  function draw(){
    ctx.clearRect(0, 0, 500, 500);
    ctx.fillText(date, 100, 100)
  }
Текущая дата устанавливается один раз в:
Javascript
1
var date = new Date();
Чтобы она генерировалась при каждом запуске draw:
Javascript
1
2
3
4
5
function draw(){
    var date = new Date();
    ctx.clearRect(0, 0, 500, 500);
    ctx.fillText(date, 100, 100)
  }
в том-то и задача - я написала сверху - мне надо оставить переменную на месте и как-то заставить функцию draw ее постоянно брать
0
front-end developer
284 / 275 / 39
Регистрация: 31.08.2010
Сообщений: 577
Записей в блоге: 1
05.10.2011, 13:16 13
Цитата Сообщение от zhukovka Посмотреть сообщение
заставить функцию draw ее постоянно брать
Она и так будет ее брать, только я не понимаю зачем нужна эта переменная как глобальная.
Можно и так сделать:

Javascript
1
2
3
4
function draw(){
    ctx.clearRect(0, 0, 500, 500);
    ctx.fillText(new Date(), 100, 100)
  }
P.S. И <canvas> из HTML5 а у Вас DOCTYPE HTML4.01
Поставьте:
HTML5
1
<!DOCTYPE html>
0
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 9
05.10.2011, 13:29  [ТС] 14
Цитата Сообщение от Vicont Посмотреть сообщение
Она и так будет ее брать, только я не понимаю зачем нужна эта переменная как глобальная.
Можно и так сделать:

Javascript
1
2
3
4
function draw(){
    ctx.clearRect(0, 0, 500, 500);
    ctx.fillText(new Date(), 100, 100)
  }
P.S. И <canvas> из HTML5 а у Вас DOCTYPE HTML4.01
Поставьте:
HTML5
1
<!DOCTYPE html>
потому что это только этот файл такой простой и маленький, а у меня будет много функций для анимации, которые используют одинаковые переменные, каждую из которых нужно будет брать посекундно и прописывать их постоянно в функции мне не нравится, должен быть способ объявить глобальную переменную и заставить функцию брать ее каждый раз
0
front-end developer
284 / 275 / 39
Регистрация: 31.08.2010
Сообщений: 577
Записей в блоге: 1
05.10.2011, 13:42 15
Цитата Сообщение от zhukovka Посмотреть сообщение
заставить функцию брать ее каждый раз
Она будет ее брать каждый раз, но с одним и тем же значением.
Чтобы так сделать нужно каждую секнду изменять глобальную переменную date:
Javascript
1
setInterval("date=new Date()",1000)
1
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 9
05.10.2011, 13:58  [ТС] 16
Цитата Сообщение от Vicont Посмотреть сообщение
Она будет ее брать каждый раз, но с одним и тем же значением.
Чтобы так сделать нужно каждую секнду изменять глобальную переменную date:
Javascript
1
setInterval("date=new Date()",1000)
Спасибо!
это именно то что мне надо было, и если этих переменных 100500 можно запихнуть их все допустим в одну функцию...
0
front-end developer
284 / 275 / 39
Регистрация: 31.08.2010
Сообщений: 577
Записей в блоге: 1
05.10.2011, 14:12 17
Лучше сделать так. У Вас к примеру есть куча функций с анимацией:

Javascript
1
animate()1, animate2(), animate3(), animate4()....
Так же есть куча переменных "типа даты"

Создаете функцию с этими переменными:

Javascript
1
2
3
4
5
6
function updateVar(){
   date = new Date();
   ...
   ...
   ...
}
Создаете функцию с вызовом всех функций анимации:

Javascript
1
2
3
4
5
6
7
8
9
function callAnimate()
{
   animate1();
   animate2();
   animate3();
   ...
   ...
   ...
}
Создаете функцию "обертку"

Javascript
1
2
3
4
5
function wrapper()
{
   updateVar(); //Обновляем переменные
   callAnimate() //Включаем анимацию
}
И ставим таймер
Javascript
1
setInterval('wrapper()',1000)
P.S. Это если все функции анимации запускать одновременно.

Если для каждую анимацию запускать отдельно то

Javascript
1
2
3
4
5
function animate1(){
 setInterval('pdateVar();',1000);
 // анимация
 
}
0
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 9
05.10.2011, 14:56  [ТС] 18
дадада так и делаю
спасибо
0
05.10.2011, 14:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2011, 14:56
Помогаю со студенческими работами здесь

Неполучается передать переменную..
Помогите пожалуйста, нашел готовый кусок кода:&lt;input type='button'...

Передать переменную в HTML
Доброго времени суток всем! Поискал в интернете и на форуме, везде предлагают то, что в данном...

Передать переменную из js в php
передать переменную из js in php &lt;script type=&quot;text/javascript&quot;&gt; $(document).ready(function(){...

Передать переменную из цикла в цикл
Здравствуйте. Подскажите, есть ли возможность передать переменную из одного цикла в другой? Есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru