Показать сообщение отдельно
Старый 19.06.2012, 14:44
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 2  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Думаю, что вам нужно не статистику именно кликов считать, а статистику просмотра страниц.

Накидал примерчик, чтоб удобнее было:
Код AS1/AS2:
_global.statsController = {};
_global.statsController.init = function(statsClip) {
	if (this.inited) {
		return;
	}
	this.inited = true;
	if (!statsClip) {
		statsClip = _root;
	}
	this.statsClip = statsClip;
	this.stats = [];
	this.capturer = _root.createEmptyMovieClip("__stats_capturer", _root.getNextHighestDepth());
	this.capturer._prevFrame = -1;
	this.capturer.onEnterFrame = function() {
		var c = _global.statsController.statsClip._currentframe - 1;
		if (this._prevFrame != c) {
			this._prevFrame = c;
			if (!_global.statsController.stats[c]) {
				_global.statsController.stats[c] = 0;
			}
			_global.statsController.stats[c]++;
		}
	};
	this.capturer.onEnterFrame();
};
_global.statsController.getStats = function() {
	var totalStats = this.statsClip._totalframes;
	for (var k = 0; k < totalStats; k++) {
		if (!this.stats[k]) {
			this.stats[k] = 0;
		}
	}
	return this.stats;
};
_global.statsController.getRelativeStats = function() {
	var total = 0;
	var output = [];
	var totalStats = this.statsClip._totalframes;
	for (var k = 0; k < totalStats; k++) {
		if (!this.stats[k]) {
			output[k] = 0;
		} else {
			output[k] = this.stats[k] / total * 100;
		}
	}
	return output;
};
//-------- Example
 
_global.statsController.init(_root);
this.onMouseDown = function() {
	var addFrame = Math.random() - 0.5 < 0 ? -1 : 1;
	var c = this._currentframe;
	c += addFrame;
	c = c == 1 ? this._totalframes : c;
	c = c > this._totalframes ? 2 : c;
	this.gotoAndStop(c);
};
 
var keyListener = {};
keyListener.onKeyDown = function() {
	trace(_global.statsController.getStats());
	trace(_global.statsController.getRelativeStats());
};
Key.addListener(keyListener);
 
this.gotoAndStop(2);
Собственно принцип такой:
1. Копируем первую часть кода до комментария "Example" и вставляем в первый кадр основной временной шкалы.

2. Если у вас все кадры презентации находятся на основной врменной шкале, то инициализируем сбор статистики так:
Код AS1/AS2:
_global.statsController.init(_root);
Если в каком-то мувиклие, то, соответственно так:
Код AS1/AS2:
_global.statsController.init( someMovieClip );
Где someMovieClip — это instance name клипа с кадрами презентации.

3. При изменении текущего кадра в клипе с презентацией будет увеличиваться значение в массиве, который можно получить методом
Код AS1/AS2:
trace(_global.statsController.getStats());
3.2 Для получения процентов просмотра кадров (от 0 до 100) можно воспользоваться методом _global.statsController.getRelativeStats().

Для примера и тестирования, создайте пустой исходник в несколькими десятками кадров и в первом вставьте полностью мой код. Щелкая мышкой будет произвольно переключаться кадр, а нажав на любую кнопку вы увидите статистику посещений кадров.
__________________
hauts.ru


Последний раз редактировалось Hauts; 19.06.2012 в 18:40.