Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.01.2015, 18:08
Интересующийся
Отправить личное сообщение для rolleyes Посмотреть профиль Найти все сообщения от rolleyes
 
Регистрация: 06.01.2015
Сообщений: 17

Не срабатывает функция... Объясните почему?
Почему-то не срабатывает функция plate. И еще вопрос: почему если i++ и plate(); поменять местами, то на этом сценарий зависает? Не сердитесь пожалуйста, я совсем нубас... только начал изучать js. заранее благодарен за ответ

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>banner 240x400 - canvas</title>
<script src="modernizr.custom.65354.js"></script>
<script type="text/javascript">
window.addEventListener("load", eventWindowLoaded, false);

function eventWindowLoaded () {
    canvasApp();
}

function canvasSupport () {
      return Modernizr.canvas;
}

function canvasApp () {

          if (!canvasSupport()) {
             return;
          }

        var theCanvas = document.getElementById("canvasOne");
        var context = theCanvas.getContext("2d");

          function drawScreen() {
		context.drawImage(bg, 0, 0);
 		context.strokeStyle = "#cacaca";
 		context.lineWidth = 1;
      		context.strokeRect(0.5,  0.5, 239, 399);

		 context.fillStyle = "#FF0000";
        	 context.font = "12px";
        	 context.fillText  ("frame = " + i, 5, 15);



		if(i == 100){
			plateStatus = true;
			plateFadeIn = true;
		}
		
		

		i++;		

		
				
        }
	

        function gameLoop() {
            window.setTimeout(gameLoop, 20);
            drawScreen();
        }




	function plate(){

		context.globalAlpha = 1;
		context.fillStyle = "#000000";
		context.fillRect(0,0, 240, 400);

		if(plateStatus == true){
			if(plateFadeIn == true){
				if(plateAlpha < 1){
					context.globalAlpha = plateAlpha;
					context.drawImage(plate, plateX, plateY);
					plateAlpha = plateAlpha + 0.01;
				}else{
					plateAlpha = 1;
					plateFadeIn = false;
					plateStatus = false;
					
					context.globalAlpha = plateAlpha;
					context.drawImage(plate, plateX, plateY);
					context.globalAlpha = 1;
				}
			}
		}
	}

        var bg = new Image();
        bg.src = "img/bg.jpg";

        var plate = new Image();
        plate.src = "img/plate.png";

	plateX = 0;
	plateY = 200;
	plateScale = 0.5;
	plateAlpha = 0;
	plateStatus = false;
	plateFadeIn = false;
	plateFadeOut = false; 

	var i = 0;

        gameLoop();

}


</script>
</head>
<body>
<div style="position: absolute; top: 50px; left: 50px;">
<canvas id="canvasOne" width="240" height="400">
Your browser doesn't support canvas.
</canvas>
</div>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 06.01.2015, 18:22
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Посмотри на строки 62 и 90. Ты объявляешь функцию, а потом перезаписываешь её как объект класса Image.
И ещё, всегда объявляй переменные с помощью var, иначе постоянно подобные ошибки будут.
Ответить с цитированием
  #3 (permalink)  
Старый 06.01.2015, 19:24
Интересующийся
Отправить личное сообщение для rolleyes Посмотреть профиль Найти все сообщения от rolleyes
 
Регистрация: 06.01.2015
Сообщений: 17

Сообщение от Safort Посмотреть сообщение
Посмотри на строки 62 и 90. Ты объявляешь функцию, а потом перезаписываешь её как объект класса Image.
И ещё, всегда объявляй переменные с помощью var, иначе постоянно подобные ошибки будут.
Оооо... Точно, спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 06.01.2015, 22:17
Интересующийся
Отправить личное сообщение для rolleyes Посмотреть профиль Найти все сообщения от rolleyes
 
Регистрация: 06.01.2015
Сообщений: 17

Safort, можно еще попросить вас ответить на один вопрос? В строках 35-37 я назначаю свойства тексту, в строках 82-84 по идее переназначаю, чтобы написать сообщение в другом стиле, но все стили и по цвету и по размеру шрифта наследуются из первого назначения... Почему?(

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>123</title>
<script src="modernizr.custom.65354.js"></script>
<script type="text/javascript">
window.addEventListener("load", eventWindowLoaded, false);

function eventWindowLoaded () {
    canvasApp();
}

function canvasSupport () {
      return Modernizr.canvas;
}

function canvasApp () {

          if (!canvasSupport()) {
             return;
          }

        var theCanvas = document.getElementById("canvasOne");
        var context = theCanvas.getContext("2d");

          function drawScreen() {
		context.drawImage(bg, 0, 0);
 		context.strokeStyle = "#cacaca";
 		context.lineWidth = 1;
      		context.strokeRect(0.5,  0.5, 239, 399);


		context.fillStyle = "#FF0000";
        	context.font = "12px";
        	context.fillText  ("frame = " + i, 5, 15);


		if(i == 100){
			plateStatus = true;
			plateFadeIn = true;
		}
		
		

		i++;		

		plateFn();
		
		 		
        }
	

        function gameLoop() {
            window.setTimeout(gameLoop, 20);
            drawScreen();
        }




	function plateFn(){

		if(plateStatus == true){
			if(plateFadeIn == true){
				if(plateAlpha < 1){
					context.globalAlpha = plateAlpha;
					plateAlpha = plateAlpha + 0.01;
				}
			}else{
				plateAlpha = 1;
			}
			context.setTransform(1,0,0,1,0,0);
			context.translate(plateX + .5*plateWidth, plateY + .5*plateHeight);
			context.scale(1,plateScale);
			context.globalAlpha = plateAlpha;
			context.drawImage(plate, -.5*plateWidth, -.5*plateHeight);
			context.setTransform(1,0,0,1,0,0);

			
			context.font = "20px";
			context.fillstyle = "#FFFFFF";
			context.fillText(plateText[actualText-1], (theCanvas.width/2) - (textWidth/2), theCanvas.height/2, 200);
		}
	}

        var bg = new Image();
        bg.src = "img/bg.jpg";

        var plate = new Image();
        plate.src = "img/plate.png";

	var plateX = 0;
	var plateY = 225;
	var plateWidth = 240;
	var plateHeight = 147;
	var plateScale = .7;
	var plateAlpha = 0;
	
	var plateText = ["Текст1", "Текст2", "Текст3"];
	
	var actualText = 1;
	var metrics = context.measureText(plateText[actualText-1]);
	var textWidth = metrics.width;

	var plateStatus = false;
	var plateFadeIn = false;
	var plateFadeOut = false; 

	var i = 0;

        gameLoop();

}


</script>
</head>
<body>
<div style="position: absolute; top: 50px; left: 50px;">
<canvas id="canvasOne" width="240" height="400">
	<img src="img/123.jpg" alt="123">
</canvas>
</div>
</body>
</html>

Последний раз редактировалось rolleyes, 06.01.2015 в 22:20.
Ответить с цитированием
  #5 (permalink)  
Старый 06.01.2015, 22:19
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

rolleyes,
конечно же)
Ответить с цитированием
  #6 (permalink)  
Старый 06.01.2015, 22:31
Интересующийся
Отправить личное сообщение для rolleyes Посмотреть профиль Найти все сообщения от rolleyes
 
Регистрация: 06.01.2015
Сообщений: 17

Кхм... Я не очень вас понял)) Вопрос все еще очень актуален! Наверно вы увидели сообщение,которое я не успел отредактировать! Я пишу в блокноте и чтобы понять какой номер строки пришлось сначала опубликовать тут))
Ответить с цитированием
  #7 (permalink)  
Старый 06.01.2015, 22:39
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

rolleyes,
Цитата:
конечно же)
я так ответил потому, что не увидел вопроса то ли из-за того, что ты его не дописал, то ли я проглядел.

Касаемо вопроса.
Посмотри, чем отличаются эти две строки кроме разных цветов?
context.fillStyle = "#FF0000";
и
context.fillstyle = "#FFFFFF";
Ответить с цитированием
  #8 (permalink)  
Старый 06.01.2015, 23:36
Интересующийся
Отправить личное сообщение для rolleyes Посмотреть профиль Найти все сообщения от rolleyes
 
Регистрация: 06.01.2015
Сообщений: 17

Значит JS чувствителен к регистру... Ясно... Спасибо добрый человек)) В свое время для меня манной был flasher.ru, теперь я кажется нашел себе новый обитель) Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает функция в атрибуте onclick? Dimaz Events/DOM/Window 7 23.07.2014 20:52
Объясните не могу понять почему так происходит cha0s jQuery 3 23.10.2013 12:52
Javascript: Функция не срабатывает GuitarFan Общие вопросы Javascript 8 12.04.2012 16:59
Почему не работает функция? Vitaly jQuery 10 31.07.2009 17:01
Функция не возвращает false, почему? Vitaly jQuery 3 05.07.2009 16:05