14.12.2017 / 05:44 |  | 
RblSb    Пользователь  
   Сейчас: Offline 
 Регистрация: 25.07.2011
   | Кальцид, onclick это нажатие и отпускание кнопки, собственно клик. И такого события нет у ctx, пиши example.onclick. Но опять-таки, я думаю ты хочешь сделать постоянное движение по зажатию кнопки, тогда нужно использовать onmousedown/ontouchdown и сохранять состояние до onmouseup/ontouchup. Вот небольшая либа для унификации эвентов мыши/тача  https://jsfiddle.net/RblSb/fjLf6n3g/ | 
  14.12.2017 / 12:54 |  | 
Gifo_Gsoul    Пользователь  
   Сейчас: Offline 
 Имя: Gifo_Gsoul Откуда: Ур Регистрация: 26.06.2014
   | Кальцид, работай слушателями событий в скрипте, вот тебе исправление example.addEventListener("click", function(e) {  
    y++;  
    box();  
}, false);  
  __________________
   </Твой код отражает эволюцию твоего мышления .../>  | 
  26.12.2017 / 12:01 |  | 
Кальцид    Пользователь  
   Сейчас: Online 
 Имя: Влад Откуда: Карадарас Регистрация: 05.12.2011
   | вот сделал столкновения . может можно как то по другому ? больше ничего в голову не приходит      https://jsfiddle.net/8mntnncw/Открыть спойлер Закрыть спойлер <!doctype html>  
<html>  
<head>  
    <title>rectExample</title>  
    <meta charset='utf-8' />  
</head>  
<body>  
<button id="downButton">down</button>  
<button id="upButton">up</button>  
<button id="rightButton">right</button>  
<button id="leftButton">left</button>  
<button id="pspeed">+ speed</button>  
<button id="mspeed">- speed</button>  
<button id="zerospeed"> zero speed</button>  
<canvas id='example'>Обновите браузер</canvas>  
<script>  
    var example = document.getElementById("example"),  
        ctx     = example.getContext('2d');  
    ew = example.width  = 340;  
    eh = example.height = 350;  
    var downButton = document.getElementById("downButton");  
    var upButton = document.getElementById("upButton");  
    var rightButton = document.getElementById("rightButton");  
    var leftButton = document.getElementById("leftButton");  
    var pspeed = document.getElementById("pspeed");  
    var mspeed = document.getElementById("mspeed");  
    var zerospeed = document.getElementById("zerospeed");  
    downButton.onclick = function () {  
        side = 1  
        y = y + s;  
    }  
    upButton.onclick = function () {  
        side = 2  
        y = y - s; }  
    rightButton.onclick = function () {  
        side = 3  
        x = x + s; }  
    leftButton.onclick = function () {  
        side = 4  
        x = x - s; }  
    pspeed.onclick = function () { s = s + 1; }  
    mspeed.onclick = function () { s = s - 1; }  
    zerospeed.onclick = function () { s = 0; }  
    var side = 0;  
    var s = 10;  
    var x = 10;  
     var y = 10;  
     var xb = 70;  
     var yb = 70;  
    ctx.strokeRect(x, y, 10, 10);  
    ctx.strokeRect(x, y, 330, 340);  
   
   
   
   
function anim() {  
ctx.clearRect(0, 0, 340, 350);  
ctx.font = "italic 20px Ariel";  
ctx.fillText(s, 5, 10 + 25);  
    ctx.fillText(side, 50, 10 + 25);  
    ctx.strokeRect(x, y, 10, 10);  
    ctx.strokeRect(0, 0, 330, 340);  
ctx.fillStyle = 'black';  
ctx.fillRect(xb, yb, 50, 50);  
   
if (x <= 3) x = 4;  
        if((side == 1) && (x + 11 >= xb) && (y + 11 >= yb) && (y < yb + 50) && (x <= xb + 50)) y = yb - 13 ;  
        if((side == 2) && (x + 11 >= xb) && (y + 11 >= yb) && (y < yb + 50) && (x <= xb + 50)) y = yb + 53 ;  
        if((side == 3) && (x + 11 >= xb) && (y + 11 >= yb) && (y < yb + 50) && (x <= xb + 50)) x = xb - 13 ;  
        if((side == 4) && (x + 11 >= xb) && (y + 11 >= yb) && (y < yb + 50) && (x <= xb + 50)) x = xb + 53;  
   
   
   
   
    setTimeout("anim()", 50);  
   
   
   
}  
   
anim()  
   
   
</script>  
</body>  
</html>  
  | 
  27.12.2017 / 09:18 |  | 
Кальцид    Пользователь  
   Сейчас: Online 
 Имя: Влад Откуда: Карадарас Регистрация: 05.12.2011
   | такая тема. есть массив блоков . как им заполнить пространство сделал так Но оно не заполняется  по идее должен по х заполнится  // это значит массив  
function Block() {  
this.bx = bx;  
this.by = by;  
   
   
}  
var blocks = [];  
// это создаёт блоки в массив  
function rock() {  
   
    for(var i=0; i<blocks.length; i++) {  
   
        var block = new Block(0, 150, 10, 10);  
   
        blocks.push(block);  
   
    }  
   
   
   
}  
// это значит тут выводятся   
function game() {  
    ctx.clearRect(0, 0, ew, eh);  
    ctx.beginPath();  
   
   
    for(var i=0; i<blocks.length; i++) {  
   
        var block = blocks[i];  
   
        block.bx = block.bx + 10;  
   
        ctx.strokeRect(block.bx, block,by, 10, 10);  
   
   
    }  
}  
   
rock()  
game()  
  | 
  27.12.2017 / 09:24 |  | 
RblSb    Пользователь  
   Сейчас: Offline 
 Регистрация: 25.07.2011
   | function Block(bx, by) { this.bx = bx; this.by = by; }
   | 
  27.12.2017 / 09:26 |  | 
Кальцид    Пользователь  
   Сейчас: Online 
 Имя: Влад Откуда: Карадарас Регистрация: 05.12.2011
   | RblSb, не работает  . вот весь код короче  https://jsfiddle.net/bvhwtsgg/     | 
  27.12.2017 / 09:50 |  | 
RblSb    Пользователь  
   Сейчас: Offline 
 Регистрация: 25.07.2011
   | Кальцид, по x заполнилось. Может у тебя не работает из-за mx is not defined и a is not defined.
   | 
  27.12.2017 / 10:18 |  | 
Кальцид    Пользователь  
   Сейчас: Online 
 Имя: Влад Откуда: Карадарас Регистрация: 05.12.2011
   | RblSb, это типо бесконечный массив ?
   | 
  27.12.2017 / 10:52 |  | 
RblSb    Пользователь  
   Сейчас: Offline 
 Регистрация: 25.07.2011
   | https://jsfiddle.net/bvhwtsgg/2/У тебя создание блоков было через for(var i=0; i < blocks.length; i++) {          var block = new Block(i*10, 150, 10, 10);          blocks.push(block); } Когда blocks.length == 0, потому что там пусто изначально, поэтому ничего не создавалось. Массивы бесконечные, да.   Изменено RblSb (27.12 / 10:53) (всего 1 раз) | 
  28.12.2017 / 20:32 |  | 
Кальцид    Пользователь  
   Сейчас: Online 
 Имя: Влад Откуда: Карадарас Регистрация: 05.12.2011
   | как применить условие к массиву объектов если в этом массиве    учавствую два разных объекта из массива ?
   Изменено Кальцид (28.12 / 20:32) (всего 1 раз) |