Показать сообщение отдельно
  #6 (permalink)  
Старый 09.02.2012, 16:24
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Естественно события надо будет вручную отправлять. То есть адаптер скачал инфу, и вызвал у себя this.fireEvent("datareceived", data). А обработчик в свою очередь перебирает всех подписчиков, и передает им что нужно, или только тем кому надо, там уж от специфики приложения зависит. Есть паттерн такой Observer, реализаций тьма. Мне часто приходится пользоваться фреймворком Ext, там все компоненты от него наследуют. Ext.utul.Observable, можете код посмотреть. Если используете jquery, то события можно поджигать методом trigger. Например

var Adapter = function () {
	Adapter.prototype.init.apply(this, arguments);
}


Adapter.prototype = {
	
	players: [],
	
	init: function () {
		jQuery.bind(this, "datareceived", function (data) {
			jQuery.each(this.players, function (player) {
				if ( player.isNeedUpdate() ) {
                                        // или всегда отправлять игроку data, а у игрока завести массив с обновлениями, и если ему надо обновиться, то он обновляется из него
					player.update(data);
				}
			});
		});
	},
	
	downloadData: function () {
		
		var data = doSomething();
		
		jQuery.trigger(this, "datareceived", data);
	},
	
	addSubscriber: function (player) {
		this.players.push(player);
	}
	
}
__________________
readOnly

Последний раз редактировалось poorking, 09.02.2012 в 16:27.
Ответить с цитированием