Есть приложение (flash/Air) в котором Юзеру нужно производить манипуляции. Есть необходимость записывать его действия (фактически cam capturing). С какой сторон ы лучше подойти к реализации такой штуке. Есть 2 мысли. 1. использовать приложение на с++/delphi которая будет в себя грузить флешку и в нужный момент делать капчуринг. 2. попытаться симулировать капчуринг . записав координаты мышки и потом по ним воспроизводить это все (тут вопрос в производительности, тк нужно все это сохранять в базу и потом читать ).
У кого какие мысли , кто сталкивался с подобными задачами ?
> а на русском? cam - надо полагать webcam? > как то смутно написано. > нужно записать действия пользователя т.е. нажатия на кпонки, переход на > формы итд? > так что ли?
да именно . И скорее всего вариант с эмуляцией отпадает. Остается изучать вариант с приложением на с++/delphi. Если кто пробовал что то подобное отпишите.
Почему отпадает? Мне тоже для одной задачи нужно записывать действия пользователя в программе. Я как раз хотел решить это запоминая последовательность движений и кликов мышкой пользователя, а затем посылать на сервер.
Storm wrote: > У кого какие мысли , кто сталкивался с подобными задачами ?
---------- var stack = new Array(); stack.push({x:x, y:y}); при mouseMove и по клику туда же записывать клик типа stack.push({x:x, y:y, clik:clik}); --------
>> нужно записать действия пользователя т.е. нажатия на кпонки, переход на >> формы итд? >> так что ли? > да именно . И скорее всего вариант с эмуляцией отпадает. > Если кто пробовал что то подобное отпишите.
Базовая функциональность:
1) Создаем класс UserLog с методами onUserEvent(param) и saveLog(). 2) Инстанцируем п.1: UserLog currentUserLog = new UserLog(); 3) В каждом клике по кнопке - вызываем currentUserLog.onUserEvent(param). 4) Когда нужно записать лог активности пользователя в БД - вызываем currentUserLog.saveLog().
Улучшенная функциональность:
5) Усложняем все до невозможности: 5.1) Смотрим где инстацируем. Смотрим права доступа к этому участку кода. 5.2) Избавляемся от типизации параметра как текст, потому что неэффективно анализировать потом - разбором строки. Например такие варианты: 5.2.1) Вводим несколько методов для сбора данных - например onKeyUserEvent(param), onMouseEvent(param). 5.2.2) Или лучше - ввести класс события, который является EventObject-ом, от которого наследуем классы KeyUserEvent, MouseUserEvent, в итоге типизируем метод вызова - суперклассом события: onUserEvent(userEvent:UserEvent). При этом класс события UserEvent (и его подклассы MouseUserEvent, KeyboardUserEvent, ComponentChangeStateUserEvent и т.д.) - инкапсулируют в себе все необходимые данные о данном действии пользователя. 5.3) Вместо п.3 (прямой вызов метода) - используем генерацию событий, подписку на события, слушатели.
> 1. использовать приложение на с++/delphi которая будет в себя грузить > флешку и в нужный момент делать капчуринг. > 2. попытаться симулировать капчуринг . записав координаты мышки и > потом по ним воспроизводить это все (тут вопрос в производительности, > тк нужно все это сохранять в базу и потом читать ). > У кого какие мысли , кто сталкивался с подобными задачами ?
Если речь о записывании действий внутри приложения, то полагаю, надо смотреть в сторону паттерна Command. Т.е. записывать действия в историю и путем их воспроизведения - получать оригинальный результат, также можно после какихто сложных действий, типа рисование сохранять состояние всего приложения, если возможно.
А если достаточно захвата картинки действий пользователя, то надо смотреть в сторону acrobat connect, они доставляют какой-то "волшебный" компонент, и это становится возможным, если кто-то знает подробности про этот компонент, было бы любопытно узнать.
Мне, например, это нужно, чтобы проводить юзабилити-тестирование интерфейса. Задачу воспроизведения я хотел решить так: Записываем движения мыши пользователя и нажатия клавиш на клавиатуре. Когда происходит смена окна или другая реакция программы на действие пользователя вызывается метод userRequest(), который записывает специальное событие в очередь. Затем визуально воспроизводится последовательность действий пользователя, но реально программа не реагирует, когда проигрыватель доходит до события userRequest, воспроизведение приостанавливается и можно уже самостоятельно выполнить нужные действия, чтобы открыть следующее окно или меню.
Это поглядеть как пользователь тыкался по приложению чтоли? Сразу ли он нашёл то что хотел?
Если записывать клики по окну в целом, то наверно это сложно будет воспроизвести потом учитывая анимации и ожидания подгрузок.. А вот если как Denis Sheremetov сказал (Command), это наверно ближе к жизни.
On 6 ноя, 01:14, Storm <vadim.karpe...@gmail.com> wrote:
> Есть приложение (flash/Air) в котором Юзеру нужно производить > манипуляции. Есть необходимость записывать его действия (фактически > cam capturing). С какой сторон ы лучше подойти к реализации такой > штуке. Есть 2 мысли. > 1. использовать приложение на с++/delphi которая будет в себя грузить > флешку и в нужный момент делать капчуринг. > 2. попытаться симулировать капчуринг . записав координаты мышки и > потом по ним воспроизводить это все (тут вопрос в производительности, > тк нужно все это сохранять в базу и потом читать ).
> У кого какие мысли , кто сталкивался с подобными задачами ?