Javascript.RU

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

Как создать объект со своими условиями if
Не могу создать объект, у него есть координаты в свойствах, он будет двигаться по canvas'у. Только ни как не доходит как можно заложить условия "if" в этот объект, которые будут проверять его к примеру на столкновения со стенкой, либо на превышения по координатам. Не могу понять общий принцип создания таких самостоятельных объектов. Нужно чтоб можно было сделать несколько копии такого объекта. Думаю что нужно создать функцию конструктор:
function element(x, y) {
this.x = x;
this.y = y;
this.action = function() {

}
}
var ball = new element(100, 200);



В программе есть функция update() {

внутри которой происходит вся динамика.

}
Ответить с цитированием
  #2 (permalink)  
Старый 21.02.2016, 11:37
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

jtag,
что не получается? Свойства в конструктор, методы - в прототип.
Ответить с цитированием
  #3 (permalink)  
Старый 21.02.2016, 12:09
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

jtag,
простейший пример.
<script>
            function Ball(x, y, dx, radius) {
                 this.x = x;
                 this.y = y;
                 this.dx = dx;
                 this.radius = radius;
             }
             document.addEventListener('DOMContentLoaded', function (e) {
                 var canvas = document.querySelector('canvas'), context = canvas.getContext('2d');
                 var ball = new Ball(50, 50, 1, 20);
                 setTimeout(drawFrame, 20);

                 function drawFrame() {
                     context.clearRect(0, 0, canvas.width, canvas.height);
                     context.beginPath();
                     ball.x += ball.dx;
                     ball.dx = ball.dx * 1;
                     ((ball.x + ball.radius > canvas.width) || (ball.x - ball.radius < 0)) && (ball.dx = -ball.dx);
                     context.fillStyle = "red";
                     context.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2);
                     context.lineWidth = 1;
                     context.fill();
                     context.stroke();
                     setTimeout(drawFrame, 20);
                 }

             })
    </script>
    <canvas width="100" height="100" style="border : 1px solid black"></canvas>
Ответить с цитированием
  #4 (permalink)  
Старый 21.02.2016, 12:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

destus,
скорее всего ТС хочет чтоб при установке x в значение более max или меньше min -- x не выходило бы за пределы и сработала функция.
min = 100, max = 200;
x = 99; = >
x = 100; fn()
Ответить с цитированием
  #5 (permalink)  
Старый 21.02.2016, 13:12
Интересующийся
Отправить личное сообщение для jtag Посмотреть профиль Найти все сообщения от jtag
 
Регистрация: 12.01.2016
Сообщений: 19

У меня вот не получается понять, как можно в функцию конструктор вставить условия, которые будут проверять координаты будучи созданных объектовl. к примеру if (x >= 100) x-=5; т.е. я хотел бы описать все методы и свойства в конструкторе, и спокойно создавать объекты не задумываясь об их поведении. Или я не так себе представляю способ решения? Когда я пишу функцию движения(this.move = function() {x+=1}) в конструкторе она просто так не работает. Ее приходится вызывать через созданный по функции конструктору объект. А если я создам сто объектов?, мне придется вызывать функцию move через каждый объект.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать многомерный пустой или как не создавать. PashPP Общие вопросы Javascript 6 02.08.2012 21:49
jQuery (Как открыть объект в этом же окне, щёлкнув по нему мышкой) Объект кусок карты hadzhimuratov (X)HTML/CSS 32 18.06.2012 17:54
Как получить URL, в случае совпадения с условиями - создать div? Intruder Общие вопросы Javascript 3 27.05.2012 02:10
как создать собственную карту как в Google map Khazaryan Общие вопросы Javascript 1 20.03.2011 02:56
как создать елемент с вложеными елементами scuter Events/DOM/Window 11 14.05.2008 16:15