Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как создать объект со своими условиями if (https://javascript.ru/forum/misc/61502-kak-sozdat-obekt-so-svoimi-usloviyami-if.html)

jtag 21.02.2016 10:08

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



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

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

}

destus 21.02.2016 11:37

jtag,
что не получается? Свойства в конструктор, методы - в прототип.

destus 21.02.2016 12:09

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>

рони 21.02.2016 12:22

destus,
скорее всего ТС хочет чтоб при установке x в значение более max или меньше min -- x не выходило бы за пределы и сработала функция.
min = 100, max = 200;
x = 99; = >
x = 100; fn()

jtag 21.02.2016 13:12

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


Часовой пояс GMT +3, время: 12:01.