Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 21.08.2012, 11:40
Аспирант
Отправить личное сообщение для daima Посмотреть профиль Найти все сообщения от daima
 
Регистрация: 01.08.2012
Сообщений: 59

Сообщение от DenBraun Посмотреть сообщение
если объекты должны взаимодействовать друг с другом то все рисуешь на одном холсте, можно написать класс который эмулирует слои рендеринга, то есть чтоб манипулировать уровнем отрисовки. В CSS полезно размещать все объекты которые не включены в игровую логику а просто я вляются интерьером игры или интерфейсом.
пример: bug-wars.com/bugwars.html
один canvas элемент
О, клевая ссыль. Надо будет попробовать распотрошить игрушку))

function player(x,y,sprite) {
this.x=x;
this.y=y;
var cache_canvas;
var move;

this.walk_left=function(){
	alert("a");

}

this.init= function(){
	

	document.onkeydown=function(e) {
	   if(e.keyCode==37) {this.walk_left; /*move=setInterval('this.walk_left',600);*/}

	}

	document.onkeyup=function(e) {
	   if(e.keyCode==37 || e.keyCode==38 || e.keyCode==39 || e.keyCode==40) this.clear();
	}


}


this.clear= function(){
	clearInterval(move);
}

this.init();
}

Добавляем игрока на холст: var hero=new player(160, 144,sprite);

Он появляется, но когда я жму на клавишу "стрелка влево",this.walk_left почему-то не запускается((

Последний раз редактировалось daima, 21.08.2012 в 12:03.
Ответить с цитированием
  #42 (permalink)  
Старый 21.08.2012, 12:57
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Вечная проблема с this. Прочитайте
Ответить с цитированием
  #43 (permalink)  
Старый 21.08.2012, 13:27
Аспирант
Отправить личное сообщение для daima Посмотреть профиль Найти все сообщения от daima
 
Регистрация: 01.08.2012
Сообщений: 59

Сообщение от zebra Посмотреть сообщение
Вечная проблема с this.
Что-то слишком сложным для меня языком написано. Есть ли проще статья?
Ответить с цитированием
  #44 (permalink)  
Старый 21.08.2012, 13:49
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Проще на примере.
this.init = function() {
     var self = this;
    document.onkeyup=function(e) {
     //this.init() -> this ссылается не на ваш класс, а на window.
    self.init(); // -> self ссылается на ваш класс
    };
};
Ответить с цитированием
  #45 (permalink)  
Старый 21.08.2012, 14:30
Аспирант
Отправить личное сообщение для daima Посмотреть профиль Найти все сообщения от daima
 
Регистрация: 01.08.2012
Сообщений: 59

Ураааааааааааааа!! Спасибо. Теперь работает. Но появился другой вопрос:
if(e.keyCode==37) {this.walk_left; /*move=setInterval('self.walk_left',600);*/}
почему-то когда держишь кнопку нажатой ф-я выполняется многократно
Ответить с цитированием
  #46 (permalink)  
Старый 21.08.2012, 14:38
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Не держите кнопку зажатой
Ответить с цитированием
  #47 (permalink)  
Старый 21.08.2012, 17:14
Аспирант
Отправить личное сообщение для daima Посмотреть профиль Найти все сообщения от daima
 
Регистрация: 01.08.2012
Сообщений: 59

не, ну как. чел зажал кнопку - человек побежал. Но почему срабатывает не 1 раз, а пока кнопку держишь?
Ответить с цитированием
  #48 (permalink)  
Старый 21.08.2012, 20:11
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Наверное флаг сделать. Если нажата кнопка flag = true, отжали flag = false
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск Canvas в IE9! Severtain Общие вопросы Javascript 7 11.04.2012 12:36
Создание экземпляра Canvas не затрагивая HTML Tails Общие вопросы Javascript 2 09.03.2012 13:55
Проблемы с Canvas Verhal Общие вопросы Javascript 1 24.01.2012 21:51
Canvas html5 Иваннн Оффтопик 9 16.01.2012 00:41
Добавить на canvas еще один елемент greengarlic Общие вопросы Javascript 5 22.09.2010 10:16