Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.04.2012, 23:36
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 11  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Сообщение от PainKiller Посмотреть сообщение
как вариант можно написать бота, например как здесь, но мне это кажется перебором, кликанье ничем не заменить.
Ссылка битая

2 Psycho Tiger: т.е. все равнозначные контроллеры наследуются от общего, который использует одно и то же хранилище вьюшек? Ну да не суть. Идею понял, в настоящий момент пытаюсь воплотить со своими поправками, интересно, что получится.

2 wvxvw:
У меня была скриптовая система, но заточить на что-то большее чем составные читы не вышло. В итоге я её выпилил, т.к. оказалось, что на as3 тоже самое налепить эффективнее по многим параметрам (даже учитывая небыстрый наш компилятор mxmlc). А вот о возможности динамической генерации скрипта при записи сценария и позабыл. Вчитываюсь...

Действительно, тяжеловато понять что тут происходит. Итересно, как бы эта система выглядела для простого сценария:
- юзер нажал кнопку "открыть окно"
- юзер дождался, пока пройдут все асинхронные процессы и окно таки откроется
- юзер нажал кнопку "сделать ерунду"
- убедиться что в ответ на нажатие кнопки "сделать фигню" появился Alert "вы делаете фигню, нельзя!"

С глобальным регистром view[class of view] еще что-то могу представить:
Не мудрствуя лукаво, создаем конвеер Потапенко и добавляем туда задачи:
- юзер нажал кнопку "открыть окно"
берем у главной вьюшки кнопку по геттеру и эмулируем нажатие:
Код AS3:
_mainView.openWindowButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
- юзер дождался, пока пройдут все асинхронные процессы и окно таки откроется
долбим по ENTER_FRAME следующее
Код AS3:
   _window = register.getView(Window)
   if (_window == null)
   {
      _numTicks++;
      if (_numTicks > waitLimith)
      {
           throw "не дождались!";
      }
   }
   else
   {
        //дождались
        _conveyor.play();
    }
- юзер нажал кнопку "сделать ерунду"
Код AS3:
_window.makeBadThingButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
- убедиться что в ответ на нажатие кнопки "сделать ерунду" появился Alert "Вы делаете ерунду, нельзя!"
Код AS3:
   var alert:Alert  = register.getView(Alert);
   if (alert == null)
   {
      _numTicks++;
      if (_numTicks > waitLimith)
      {
           throw "мы ждали, ждали, а окно Вы делаете ерунду так и не всплыло";
      }
   }
   else
   {
        if (alert.text != "Вы делаете ерунду, нельзя!")
        {
             throw "Вообще-то, мы ожидали другое окно";
        }
        _conveyor.play();
    }
А вот со скриптом как это будет вообще не представляю


Последний раз редактировалось expl; 19.04.2012 в 00:05.
Старый 19.04.2012, 00:09
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 12  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Цитата:
Сообщение от expl Посмотреть сообщение
Ссылка битая
попробую еще раз: http://active.tutsplus.com/tutorials...lay-web-games/

Старый 19.04.2012, 00:12
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 13  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ну как бы в этом как раз и смысл, чтобы часть программы, которая должна взаимодействовать с пользователем сделать через "посредника" - этот посредник и будет вести лог + этот же лог будет самой программой выполнив которую тестируемая программа в точности воспроизведет то, что делал с ней до этого пользователь.
Самым неудачным местом в этой системе будет то, что нужно будет решить какие вызовы делать через встроенный язык - и они будут однозначно медленнее прямых вызовов, кроме того, у встраиваемого языка могут быть ограничения связаные со всякими особенностями окружения (констуирование объектов со сложными ссылками, например).

Я когда-то думал о вариантах для встроенного языка, и собственно вот размышления по этому поводу:

Что-то совсем примитивное бейсикоподобное - легко написать, ни использовать - у меня тавма детства от бейсика Да и я толком не знаком ни с одной из реализаций. Но, в принципе, как скриптовый язык - нормально.

ЭкмаСкрипт - очень плохо подходит для работы с интерактивной консолью (объявление функций, сложный синтаксис). Но зато близко по духу АС3.

Баш - есть ограничения на то, что можно сделать интерактивно + очень много внимания уделяется раскрытию путей к файлам, которое в такой ситуации не нужно.

Питон - вобщем, было бы даже ничего так, но изза того, что индентация влияет на то, как парсинг - показалось ненадежно.

Из лисповых вариантов - Анси Лисп - было бы здорово почти по всем параметрам, но очень уж он громоздкий. ЕмаксЛисп - вполне бы даже подошло. Схема - отравить жизнь ближним функциональным стилем.
Но даже еЛисп очень уж большой и полная реализация заняла бы много места. Поэтому кропаю какую-то часть чего-то очень похожего на него.

Можно, кстати, подумать об Эрланге - он довольно простой язык, но есть специфические конструкции которые в однопоточной среде тяжело реализовать. Кроме того, интерактивный шел хоть и есть, но не полноценный.
__________________
Hell is the possibility of sanity

Старый 19.04.2012, 01:04
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 14  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Это что же получается, сначала мы кликаем по кнопкам и записываем скрипт
А потом запускаем скрипт, который кликает по кнопкам и записывает скрипт
И мы же ручками ещё должны дописать проверки(assert'ы) к этому скрипту после записи?
Генеральная идея понятна, просто не понятно что вообще в примере происходит

Ещё некоторые опасения не понятны:

По-моему, как раз взаимодействие с особенностями окружения не проблема, если выбрать скрипт на базе экма. Сам использовал hscript (но пришлось вдоль и поперек перепилить логику, ибо в оригинале для использования внутри as3 неудобен и даже не совсем работает - первым делом как заставил работать выпилил итераторы, бесполезные в as3, и впилил нормальный для as3 for each/for in, еще функции пришлось подрасширить)
После "доточки" на нем строчилось как на as3, только без типизации и дерганье as3-функций/создание объектов через new выполнялось без проблем.
Чем так плох java-script-подобный язык для консоли?

По скорости тоже не понимаю опасений - ведь поднятие окон, выполнение запросов на сервер занимает куда больше времени чем вызов через скрипт. Там же не планируется диких алгоритмов с кучей проходов.

Цитата:
Сообщение от PainKiller Посмотреть сообщение
Ага, теперь открылось


Последний раз редактировалось expl; 19.04.2012 в 01:16.
Старый 19.04.2012, 02:23
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 15  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
http://code.google.com/p/flash-embedded-language/
Вот, залил что есть. Оно конечно страшненько пока что выглядит, но в принципе, при желании, я думаю, что можно будет разобраться.

Ассерты - не, это не из той серии... это скорее CI тест / чтобы проверить, что ничего не испортили / программа вообще запускается и выполняет запланированные сценарии. Т.е. возможно, в теории можно будет как-то написать скрипт, чтобы он не просто воспроизводил действия пользователя, а еще и ошибки ловил и сам себя восстанавливал после ошибок и продолжал дальше... но мне это видится очень сложным... Т.е. ассерты - это для юнит тестов. Код, который идет на CI в принципе "считается" рабочим, т.е. он не должен сразу же падать с кучей ошибок, скорее задача найти трудновоспроизводимые баги.
Цитата:
Это что же получается, сначала мы кликаем по кнопкам и записываем скрипт
А потом запускаем скрипт, который кликает по кнопкам и записывает скрипт
Практически так, за исключением того, что скрипт не генерирует события кликов, а обработчики написаны так, чтобы они напрямую не вызывали функции, которые выполняют необходимые действия, а делают это через посредника. С событиями скорее всего будет гораздо тяжелее, т.как на уровне плеера это не возможно контролировать, кроме того на разных устройствах разные события будут и с разными настройками мыши и т.д. Все ето никак не получится "мокапом" заменить т.как до такой степени флеш не разобрать на части...

Экма для последовательного исполнения - ну как бы совсем не айс... в том смысле, что например:

Код:
var foo = bar();
function bar() { return ""; }
нормально - но чтобы отследить что же на самом деле происходило (т.е. bar не должен был вызваться т.как его еще не было) не получится.
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 19.04.2012 в 02:34.
Старый 19.04.2012, 11:14
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 16  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
С событиями скорее всего будет гораздо тяжелее, т.как на уровне плеера это не возможно контролировать, кроме того на разных устройствах разные события будут и с разными настройками мыши и т.д. Все ето никак не получится "мокапом" заменить т.как до такой степени флеш не разобрать на части...
Видимо у меня несколько другие задачи: на других устройствах запускать всё равно социалку не будем - просто если дойдёт до мобилок - единственный вариант - родить 2-ю версию на С++ ибо иначе тормоза и память не позволят. Буду кликать напрямую и не парится.
Единственное - непонятно как эмулировать движения мыши - всех наследовать от одного спрайта с перегруженными mouseX и mouseY чтоли...

Старый 19.04.2012, 12:17
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 17  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Я думал в совсем другом направлении... Можно было бы попробовать эмулировать работу мыши, например, с помощью такой штуки: http://www.semicomplete.com/projects/xdotool/ и писать скрипты не во флеше а сделать оболочку запускающую плеер. Но тут фишка в том, что это будет не скоррелировано с действиями настоящих пользователей, т.е. прийдется самому писать сценарии / выдумывать.
Можно, конечно, попрововать во флеше ловить все события на уровне capture - но будет очень много шума, особенно от передвижения мышки, печатания текстов и т.п.
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:14.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:14.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.