Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.04.2019, 21:40
Кандидат Javascript-наук
Отправить личное сообщение для Всемогущий Посмотреть профиль Найти все сообщения от Всемогущий
 
Регистрация: 11.09.2018
Сообщений: 128

Странная "ошибка"
В нижеприведенном коде, очень странная ошибка!!!! когда я рисую линию
ctx.lineTo(0,5);
ctx.moveTo(10,10);
ctx.stroke();

то все нормально ! но когда я рисую линию в игре... тут такое....почему то когда мой корабль двигается то линия "размазывается" !!! хотя не должна.
вот мой код:
<head>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   </head>
   <body>
       <canvas id='myCanvas' height='500' width='700' style="border:1px solid black;"class="invisible"> </canvas>	 
				 
<script type="text/javascript">
 
	var angle1 = 0;  
	var sp = 1;
	var x = 400;
	var y = 250;
	var speed = 1;
	var angle = 0;
	var mod = 0;
	var stop = 0;

	var canvas  = document.getElementById("myCanvas");
	var ctx     = canvas.getContext('2d');
  
ship1 = new Image();
ship1.src = "https://i.paste.pics/74f8b071f80f88d8f71df1ffa634ee38.png";
ship1.onload = game;
 
function draw() {
	
    ctx.fillStyle = "green";
    ctx.fillRect(x, y, 30, 45);
 
ctx.beginPath();
	  ctx.moveTo(x+100, y+100);
  ctx.lineTo(x+200,  y+100);



ctx.stroke();
   


 ctx.save();
    ctx.translate(400, 200);
	ctx.rotate(Math.PI / 480 * angle); 
	ctx.scale(0.5,0.5);
    ctx.drawImage(ship1, -40, -40,80,80);
    ctx.restore();
    ctx.save();
 
 ctx.font = "14px Arial";
ctx.fillStyle = "black";
ctx.fillText("x:" + Math.round(x),110,40);
ctx.fillText("y:" + Math.round(y),190,40);
 
document.onkeydown = function(event) {
    if (event.keyCode == 87 || event.keyCode == 83) {
        mod = 0; e = 1; stop = 1;}
}
document.onkeydown = function(event) {
    //console.log(event.keyCode);
    if (event.keyCode == 87) {
        mod = 1;   
    }
    if (event.keyCode == 83) {
        mod = -1;  
    }
    if (event.keyCode == 65) {
        angle -= 10;  stop = 0;
    }
    if (event.keyCode == 68) {
        angle += 10;  stop =0;
    }
    if (event.keyCode == 32) {
		
    }
  if(event.keyCode == 70){  stop = 1;}
}}

function move(){
	
	 if( stop == 0){
	x += (speed * mod) * Math.cos(Math.PI / 480 * angle);
    y += (speed * mod) * Math.sin(Math.PI / 480 * angle);
    angle1 += 0.2 * Math.PI / 180;   
	}}

function game() {
	        ctx.clearRect(0, 0, canvas.width, canvas.height);
	        draw();
	        move();
	        requestAnimationFrame(game);
	    
	}
       </script>
   </body>
</html>

В чем заключается эта странная аномалия?! у линии не должен быть след !!!!! даже когда я пишу ctx.lineTo(x+5,y+10);

Последний раз редактировалось Всемогущий, 30.04.2019 в 22:04.
Ответить с цитированием
  #2 (permalink)  
Старый 30.04.2019, 01:07
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Опять этот странный код плюс три новых строчки
Ответить с цитированием
  #3 (permalink)  
Старый 30.04.2019, 16:49
Кандидат Javascript-наук
Отправить личное сообщение для Всемогущий Посмотреть профиль Найти все сообщения от Всемогущий
 
Регистрация: 11.09.2018
Сообщений: 128

Обновил код, есть догадки почему размазывается ?
Ответить с цитированием
  #4 (permalink)  
Старый 30.04.2019, 17:06
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Всемогущий,
Учи основы работы с Canvas API, какая может быть игра, если ты примитивную линию не в состоянии нарисовать, метод тыка здесь не работает, придется мозгой своей пытаться шевелить.

Последний раз редактировалось Rise, 30.04.2019 в 17:09.
Ответить с цитированием
  #5 (permalink)  
Старый 30.04.2019, 19:39
Кандидат Javascript-наук
Отправить личное сообщение для Всемогущий Посмотреть профиль Найти все сообщения от Всемогущий
 
Регистрация: 11.09.2018
Сообщений: 128

Сообщение от Rise Посмотреть сообщение
Всемогущий,
Учи основы работы с Canvas API, какая может быть игра, если ты примитивную линию не в состоянии нарисовать, метод тыка здесь не работает, придется мозгой своей пытаться шевелить.
Вы ошибаетесь, линию я то могу нарисовать, а вот игру один написать не могу)
А вот почему линия размазывается при движении обьектов на игровом поле, это я у вас спрашиваю. И кстати canvas я изучил вдоль и поперек, и дело тут не в том хорошо или плохо я знаю канвас, а в том что я линия размазывается !!! хотя так и не должно быть !!!! у меня же остальные объекты не размазываются ?!
Ответить с цитированием
  #6 (permalink)  
Старый 30.04.2019, 20:34
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Всемогущий
Вы ошибаетесь, линию я то могу нарисовать
Ну-ка нарисуй две линии первую желтую, вторую красную, посмотрим.
Ответить с цитированием
  #7 (permalink)  
Старый 30.04.2019, 20:43
Кандидат Javascript-наук
Отправить личное сообщение для Всемогущий Посмотреть профиль Найти все сообщения от Всемогущий
 
Регистрация: 11.09.2018
Сообщений: 128

<head>

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

	   </head>

	   <body>

	       <canvas id='myCanvas' height='500' width='700' style="border:1px solid black;"class="invisible"> </canvas>   

	                  

	<script type="text/javascript">
 

 

	 

	    var canvas  = document.getElementById("myCanvas");
	    var ctx     = canvas.getContext('2d');
ctx.beginPath();
ctx.strokeStyle = "yellow";
ctx.moveTo(45,67);
ctx.lineTo(80,100);
ctx.stroke();  

ctx.beginPath();
ctx.strokeStyle = "red";
ctx.moveTo(55,87);
ctx.lineTo(90,120);

	ctx.stroke();   


 </script>

	   </body>

Последний раз редактировалось Всемогущий, 30.04.2019 в 20:46.
Ответить с цитированием
  #8 (permalink)  
Старый 30.04.2019, 20:51
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Ну и что ты разницы не видишь с первым постом что-ли? Здесь ты так делаешь, а там по другому почему-то.
Ответить с цитированием
  #9 (permalink)  
Старый 30.04.2019, 22:05
Кандидат Javascript-наук
Отправить личное сообщение для Всемогущий Посмотреть профиль Найти все сообщения от Всемогущий
 
Регистрация: 11.09.2018
Сообщений: 128

Разобрался уже) кстати как удалить тему на форуме ?

ctx.beginPath()
ctx.moveTo(x+100, y+100);
ctx.lineTo(x+200, y+100);
ctx.stroke();
Ответить с цитированием
  #10 (permalink)  
Старый 30.04.2019, 22:11
Кандидат Javascript-наук
Отправить личное сообщение для Всемогущий Посмотреть профиль Найти все сообщения от Всемогущий
 
Регистрация: 11.09.2018
Сообщений: 128

Вы правы Rise, надо читать книги по этой теме
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странная ошибка gko11 jQuery 1 04.07.2017 18:21
Переменная в селекторе Jquery - странная ошибка kapustnik jQuery 11 17.10.2013 10:13
Странная проблема с меню Superfish nyar jQuery 0 01.04.2013 16:21
Странная проблема с валидотором и JavaScript Викториан Элементы интерфейса 14 15.01.2013 21:33
Странная работа в Хроме и Сафари Flake jQuery 1 08.09.2010 10:28