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 раз) |