Comments 22
Спасибо большое!
-5
А Вы пробовали theshock.github.com/libcanvas от theshock?
+5
github.com/theshock/theshock.github.com — это для тех, кто хочет участвовать в развитии проекта или же просто ознакомиться в исходниками.
0
*с исходниками
+1
Спасибо) Тут лежит сайт с исходниками примеров, а сам LibCanvas — theshock.github.com/libcanvas
+3
Ссылки эти у меня в закладках пока хоронятся, пока руки не доходят. Но в планах )
0
Затягивает… зараза
+1
В данном примере, конечно, в этом смысла нет, но гораздо интересней просчитывать перемещение шарика через углы. В конечном счёте, открывает больший простор для разнообразных действий. Правда реализовать это у меня получилось только в прямоугольной области. С отражением от окружности пока загвоздки.
0
Ну через углы это конечно лучше, но просто несколько усложнило бы код, да и в игре где все прямоугольное я думаю это было бы неоправданной роскошью ))
0
Ну да, я то просто добавлял управление с клавиатуры, шариком можно было «летать» :) А здесь это может пригодится в случае добавления гравитационных полей и всяческих, связанных с этим павер-апов.
Что-то я замечтался :)
Что-то я замечтался :)
0
вы принципиально не используете ключевое слово «var»?
0
В данном случае var не используется, т. к. это не переменные, а классы. С ключевым словом «var» методы класса работать не будут.
0
хм, немного пристальней вгляделся в код. Что вы имеете ввиду под «классами»? В любом случае, внутри функции
Да, да, я понимаю, что это простенький пример и тут и так все понятно, просто советую Вам в более серъезных задачах так не делать.
И, кстати, даже в Вашем примере, уж если без глобальных переменных было не обойтись, то правильно бы было вверху скрипта сделать объявление:
init()
у Вас объявляются переменные start, game, ai, player, ball
без ключевого слова var. JavaScript, когда встречает такие объявления, делает такие переменные глобальными (если точнее — свойствами объекта window), поэтому все и работает. Но это очень плохой стиль, т.к. мало того, что засоряется глобальное пространство имен, так еще и понять, где что было объявлено потом очень трудно.Да, да, я понимаю, что это простенький пример и тут и так все понятно, просто советую Вам в более серъезных задачах так не делать.
И, кстати, даже в Вашем примере, уж если без глобальных переменных было не обойтись, то правильно бы было вверху скрипта сделать объявление:
var start, game, ai, player, ball;
0
Я, конечно, не силён в яваскрипте. Вполне вероятно, что сморозил глупость.
Я так понял, что start, game, ai, player и ball это не переменные, а объекты класса rect, который содержит поля width, height, color и метод draw. Обычные переменные не могут их содержать.
В любом случае, в Опере вызываемые методы этих объектов не работают, если объекты объявлять с ключевым словом var.
Я так понял, что start, game, ai, player и ball это не переменные, а объекты класса rect, который содержит поля width, height, color и метод draw. Обычные переменные не могут их содержать.
В любом случае, в Опере вызываемые методы этих объектов не работают, если объекты объявлять с ключевым словом var.
0
Ах да, этот код совсем не мой :)
0
Извините, у вас в листинге об aiMove() в коде допущена ошибка. Вы обращаетесь к свойству vY неизвестного объекта:
Должно быть вы обращаетесь к свойству vY объекта ball, тогда должно быть:
y = ai.y + vY;
Должно быть вы обращаетесь к свойству vY объекта ball, тогда должно быть:
y = ai.y + ball.vY;
+1
Прошу прощения, это я ошибся! Не обратил внимание на строку:
Но не могу понять почему мы отнимаем 2 от ball.vY, если ball.vY по-умолчанию 2. Тогда значение vY всегда будет ровно 0 и ракетка всегда будет стоять на месте.
var vY = Math.abs(ball.vY)-2
Но не могу понять почему мы отнимаем 2 от ball.vY, если ball.vY по-умолчанию 2. Тогда значение vY всегда будет ровно 0 и ракетка всегда будет стоять на месте.
+1
Sign up to leave a comment.
Canvas шаг за шагом: ПОНГ