|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.08.2018, 16:14 | #1 |
Форумчанин
Регистрация: 15.08.2015
Сообщений: 173
|
почему не работает код в цикле?
Если один обьект (Мяч) поставить выполнение его методов то работает или несколько только если в ручную каждый прописать
Ball1.draw(); //перемещение Ball1.move(); //проверка столкновения Ball2.checkCollision(); Ball2.draw(); //перемещение Ball2.move(); //проверка столкновения Ball2.checkCollision(); и т .д. а если много мячей через цикл не получается [CODE]<script type="text/javascript"> var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); //#1. Увеличение размеров «холста» var width = canvas.width; var height = canvas.height; //Конструктор Ball var Ball = function () { this.x = 100; this.y = 100; this.xSpeed = Math.random()*5 - 5; this.ySpeed = Math.random()*5 - 5; }; //Рисуем мяч var circle = function (x, y, radius, fillCircle) { ctx.beginPath(); ctx.arc(x, y, radius, 0, Math.PI*2, false); if (fillCircle) { ctx.fill(); }else{ ctx.stroke(); } }; //этот метод будет доступен всем обьектам созданным от Ball Ball.prototype.draw = function () { circle(this.x, this.y, 3, true); }; //Перемещение мяча Ball.prototype.move = function () { this.x += this.xSpeed; this.y += this.ySpeed; }; //Отскоки мяча Ball.prototype.checkCollision = function () { if (this.x < 0 || this.x > width) { this.xSpeed = - this.xSpeed; } if (this.y < 0 || this.y > height) { this.ySpeed = - this.ySpeed; } } //создаем мяч var ball0 = new Ball(); var ball1 = new Ball(); var ball2 = new Ball(); var ball3 = new Ball(); var ball4 = new Ball(); var ball5 = new Ball(); var ball6 = new Ball(); var ball7 = new Ball(); var ball8 = new Ball(); var ball9 = new Ball(); var ball10 = new Ball(); //#3. Больше мячиков! var arrayBall = []; //заполнили масив arrayBall 10 мячами for (var i = 0; i < 10; i++) { //arrayBall.push('ball'+i); arrayBall.push('Ball'+i); } проблема именно в setInterval( function () { for (var i = 0; i < arrayBall.length; i++) { //очиска холста ctx.clearRect(0, 0, width, height); //рисуем по новому в другом месте (координатах) arrayBall[i].draw(); //перемещение arrayBall[i].move(); //проверка столкновения arrayBall[i].checkCollision(); arrayBall[i].move(); //проверка столкновения arrayBall[i].checkCollision(); //рисуем обводку холста ctx.strokeRect(0, 0, width, height); if (i>=arrayBall.length) { i=0; } } }, 30); что тут не правильно?
Москва форум- общение на любые темы!!
Последний раз редактировалось nikytt; 21.08.2018 в 16:29. |
21.08.2018, 16:25 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
Так добавляйте в массив объекты, а не строки.
|
21.08.2018, 16:34 | #3 |
Форумчанин
Регистрация: 15.08.2015
Сообщений: 173
|
спасибо а можно пример из моего кода?
Москва форум- общение на любые темы!!
|
21.08.2018, 16:35 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
Ну пуште сразу нью бол в массив.
|
21.08.2018, 16:37 | #5 |
Форумчанин
Регистрация: 15.08.2015
Сообщений: 173
|
пробовал но что то не вышло попробую еще.
Москва форум- общение на любые темы!!
|
21.08.2018, 16:38 | #6 |
Форумчанин
Регистрация: 15.08.2015
Сообщений: 173
|
вот так
//#3. Больше мячиков! var arrayBall = []; //заполнили масив arrayBall 10 мячами for (var i = 0; i < 10; i++) { arrayBall.push('var ball' + i +' = new Ball()'); } ?
Москва форум- общение на любые темы!!
|
21.08.2018, 16:40 | #7 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
Зачем вы строку пихаете? Зачем вам объявление переменной пихать? Какое выражение создает объект?
|
21.08.2018, 16:42 | #8 |
Форумчанин
Регистрация: 15.08.2015
Сообщений: 173
|
new Ball()
Москва форум- общение на любые темы!!
|
21.08.2018, 16:43 | #9 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
И? Зачем вы чепуху пытаетесь в массив пихнуть, а не объекты?
|
21.08.2018, 16:46 | #10 |
Форумчанин
Регистрация: 15.08.2015
Сообщений: 173
|
так а создать чтобы уникальный обьект ему же имя нужно
Москва форум- общение на любые темы!!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не работает gets вообще, ни один код не работает с gets, почему? | Мaкс | Общие вопросы C/C++ | 4 | 26.07.2018 11:49 |
Почему не работает код | Deumath | Общие вопросы по Java, Java SE, Kotlin | 15 | 17.10.2017 21:36 |
почему не работает код? | Бза | JavaScript, Ajax | 1 | 14.08.2016 13:57 |
Почему то не работает код | Airon13rus | HTML и CSS | 27 | 02.12.2013 15:54 |
почему не работает код? | Tolian92 | Помощь студентам | 1 | 21.05.2012 23:16 |