Jump to content
Korean Random
SV_Kirov

Как создать форму(Окно) в ангаре

Recommended Posts

И после всего этого ты говоришь, что это не костыльный способ?

Ну хз хз, там все просто, и костылей толком нет, единственное надо перетерпеть AS2 =(

Плюсы я думаю описывать ненадо =)

Share this post


Link to post

Short link
Share on other sites

AS2

Я про него и говорил с самого начала.

MovieClip'ы это ...

Edited by ShadowHunterRUS

Share this post


Link to post

Short link
Share on other sites

 

Раньше таких методов не было. Когда они появились?

Да всегда они там были, я про loadSwf =)

 

Я про него и говорил с самого начала. MovieClip'ы это ...

AS2 больше нечего добавить =)

Share this post


Link to post

Short link
Share on other sites

Оке миниинструкция по боевому флешу, мб кому пригодится.

 

Внутри battle.swf (главного холдера боевого флеша) есть метод прямо в корне, называется loadSwf, его мы и будем использовать как загрузчик нашего флеша

Писать флеш для боя будем на AS2, так как сам бой тоже на AS2 написан.

Советую Использовать для написания FlashDevelop а для сборки Flash Pro (через него embed графики в AS2 делается).

Вот пример внедрения в бой клик изменение как боевых елеменов, так и связь питон <=> флеш (маркера это не боевой флеш)

Итак поехали.

У нас есть логика на питоне, не важно что она делает, она работает всегда, внутри нее у нас вызовы обвязки флеша на питоне.

Обвязку флеша на питоне нужно контролировать (инитить при создании боевого интерфейса, и "нуллить" при дестрое боевого флеша) - клик клик

Итак когда у нас обвязка флеша на питоне уже сама создается и дестроится, пора дергать боевой флеш и грузить нашу флешку - клик клик клик клик

А дальше все просто, реализуйте любые визуальности на флеше, гоняйте данные туда сюда, меняйте бой как вам угодно =)

Вот как дергается флеш из питона на примере ивента, изменение размера экрана - клик клик

 

UP перечитал эту пелену, не неумею я в туторы =)

 

 

спасибо! завтра смогу посмотреть. 

Share this post


Link to post

Short link
Share on other sites

Итак когда у нас обвязка флеша на питоне уже сама создается и дестроится, пора дергать боевой флеш и грузить нашу флешку

DAAPI только в одну сторону))) В обратную тоже можно, правда посложнее немного... Будет время - кину примерчик, а то не дают даже за компом спокойно посидеть(((

Как раз таки надо рассказать народу про разницу между DAAPI и ExternalInterface (ЕМНИП, как-то так оно называется). Как оно подымается, что может и как с ними работать.

MovieClip'ы это ...

Для тех, кто не совсем понял, что к чему, класс наследуется от MovieClip и цепляется базовым классом к нужному элементу, определяя его дополнительный интерфейс. Соответственно, получая контрол флеш объекта через DAAPI можно использовать свойства и вызывать методы этого объекта.

Share this post


Link to post

Short link
Share on other sites

Оке миниинструкция по боевому флешу, мб кому пригодится.

 

Внутри battle.swf (главного холдера боевого флеша) есть метод прямо в корне, называется loadSwf, его мы и будем использовать как загрузчик нашего флеша

Писать флеш для боя будем на AS2, так как сам бой тоже на AS2 написан.

Советую Использовать для написания FlashDevelop а для сборки Flash Pro (через него embed графики в AS2 делается).

Вот пример внедрения в бой клик изменение как боевых елеменов, так и связь питон <=> флеш (маркера это не боевой флеш)

Итак поехали.

У нас есть логика на питоне, не важно что она делает, она работает всегда, внутри нее у нас вызовы обвязки флеша на питоне.

Обвязку флеша на питоне нужно контролировать (инитить при создании боевого интерфейса, и "нуллить" при дестрое боевого флеша) - клик клик

Итак когда у нас обвязка флеша на питоне уже сама создается и дестроится, пора дергать боевой флеш и грузить нашу флешку - клик клик клик клик

А дальше все просто, реализуйте любые визуальности на флеше, гоняйте данные туда сюда, меняйте бой как вам угодно =)

Вот как дергается флеш из питона на примере ивента, изменение размера экрана - клик клик

 

UP перечитал эту пелену, не неумею я в туторы =)

 

 

Подскажи, где можно качнуть мод как у тебя WGTV - helper? :)

  • Downvote 2

Share this post


Link to post

Short link
Share on other sites

Оке миниинструкция по боевому флешу, мб кому пригодится.

 

Внутри battle.swf (главного холдера боевого флеша) есть метод прямо в корне, называется loadSwf, его мы и будем использовать как загрузчик нашего флеша

Писать флеш для боя будем на AS2, так как сам бой тоже на AS2 написан.

Советую Использовать для написания FlashDevelop а для сборки Flash Pro (через него embed графики в AS2 делается).

Вот пример внедрения в бой клик изменение как боевых елеменов, так и связь питон <=> флеш (маркера это не боевой флеш)

Итак поехали.

У нас есть логика на питоне, не важно что она делает, она работает всегда, внутри нее у нас вызовы обвязки флеша на питоне.

Обвязку флеша на питоне нужно контролировать (инитить при создании боевого интерфейса, и "нуллить" при дестрое боевого флеша) - клик клик

Итак когда у нас обвязка флеша на питоне уже сама создается и дестроится, пора дергать боевой флеш и грузить нашу флешку - клик клик клик клик

А дальше все просто, реализуйте любые визуальности на флеше, гоняйте данные туда сюда, меняйте бой как вам угодно =)

Вот как дергается флеш из питона на примере ивента, изменение размера экрана - клик клик

 

UP перечитал эту пелену, не неумею я в туторы =)

 

Никто случайно не сохранил скрины по ссылкам? Или может POLIROID обновишь их? Очень прошу. Пелена или нет, но хоть какая то информация была бы для изучения. А то было уже обрадовался, что смогу в боевой флеш, но........  :wah:

Edited by Tester

Share this post


Link to post

Short link
Share on other sites

Никто случайно не сохранил скрины по ссылкам? Или может POLIROID обновишь их? Очень прошу. Пелена или нет, но хоть какая то информация была бы для изучения. А то было уже обрадовался, что смогу в боевой флеш, но........  :wah:

думаю, что даже если кто-то сохранил, то никто не даст их :(

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

Никто случайно не сохранил скрины по ссылкам? Или может POLIROID обновишь их? Очень прошу. Пелена или нет, но хоть какая то информация была бы для изучения. А то было уже обрадовался, что смогу в боевой флеш, но........

Скрины на форум прямо заливать надо, чтобы точняк не потерялись.

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

Там ничего особо сложного нет, есть примеры по инициализации DAAPI и некоторые воспоминания по GameDelegate (имплементация обвязки ExternalInterface by Kartoxa) Будет время - нарисую доку с инфой в чем разница, че оно могёт и как это впихнуть и как пинать. Надо будет только покопаться немного в картохиных кодах, немного выловить общие моменты между root и ui флешками по части инициализации. И вспомнить что куда по EI, ибо давненько в последний раз встречался. Ну и с типами немного разобраться. AS3 не обещаю, но по AS2 постараюсь запилить. Не думаю, что там будет существенная разница, хотя отличия безусловно будут.

Edited by GPCracker
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

В-общем, есть портяночка с теорией на русском. Вообще, скорее всего, гайд будет большим комментарием к коду, и 99% что на английском, ибо перевести на русский, во-первых, проще, чем с русского (автоматический перевод понятнее получается), тут не только русские сидят, во вторых далеко не всем потребуется, ибо большинство адекватных программистов знают английский хотя бы на уровне чтения со словарем.

"Короче, вот сама портяночка"

post-21078-0-76540200-1446034448_thumb.png

Ко всему этому добавлю, что ExternalInterface в WoT используется через класс gfx.io.GameDelegate (ActionScript), являющийся по сути оберткой. Со стороны Python - метод call объекта, используемого в качестве корневого для интеграции флешки, являющегося экземпляром класса gui.Scaleform.Flash.Flash

Вообще, флешка в WoT инородный элемент, интегрированный через Scaleform. По сути, флешка состоит из двух элементов - BigWorld GUI контейнера и экземпляра Scaleform movie, впихнутого в этот контейнер.

 

Upd. Жалко скринов не сохранилось... Так бы может еще чего полезного добавил в гайд. Вобщем, отдебажил код более-менее, теперь надо приводить его к человеческому виду и дописывать/править комменты)). Два варианта загрузки/выгрузки флешки, двухсторонние DAAPI и ExternalInterface, примерчики по части управления и некоторая другая полезная информация.

Edited by GPCracker
  • Upvote 4

Share this post


Link to post

Short link
Share on other sites

Запилил таки гайдец. Оформить тему вряд ли, ибо все на инглише и в комментариях к коду, но так оно ИМХО понятнее. Перепечатывать в тему долго и муторно, поэтому просто выкладываю архивчик с файлами.

На вопрос - а где гайд - еще раз скажу - в комментариях к коду. Там два файла со скриптами, as и py, флеш-проект fla и пример собранной флешки. Питон тестил через отладчик. Что касаемо варианта с FlashDevelop - я в нем вообще не особо умею, да и думаю грамотные люди разберутся что и как надо поменять. У меня и так вариантов много получилось.

Что касаемо картохиных скриптов - их там НЕТ. Убрал. Их берете (нужные вам классы) из декомпильнутой battle.swf. Они могут меняться со временем, ибо у картофана нет ничего стабильного. Чем декомпилить - в другую тему, есть на этом форуме гайды. Я сотником работал, с AS2 флешками вполне спокойно справляется. Для AS3 нужно брать что-то помощнее типа JPEXS. Учитывайте выходную версию файлов, ибо ваш флеш может из попросту несхавать.

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

Для этой темы вам как минимум понадобятся знание Python на уровне "могу написать что хочу, пусть и костылями, и понимаю что написали другие" и не меньший уровень с ActionScript. Разберитесь с языками отдельно, перед тем как лезть в этот кросс-интерфейс. Отладчика тут нет!

Я все это пишу потому, что сам немало потратил времени на понимание всего этого. Это не самая простая вещь даже в плане логики, не говоря уже об отладке. При отладке того же DAAPI (в особенности из AS в Python) клиент вылетал без объяснения причин не раз и не два. И тут далеко не все очевидно и понятно. И далеко не все так стабильно как хотелось бы.

Ну думаю все поняли, с чем придется иметь дело, поэтому выкладываю сами файлы.

Flash Interaction.zip

Edited by GPCracker
Удален дубликат файла
  • Upvote 5

Share this post


Link to post

Short link
Share on other sites

Запилил таки гайдец.

attachicon.gifFlash Interaction.zip

 

GPCracker, громадное, искреннее спасибо.

 

Сижу разбираюсь, изучаю понемногу. Благо есть от чего отталкиваться уже.

По первому способу все заработало буквально с первого раза. Пока с ним работаю.

На втором застопорился с ошибкой. Пока не разбирался детально, отложил изучение второго способа на потом. Единственное, что увидел, так что g_appLoader.getDefBattleApp() возвращает None. Соответственно питон ругается на отсутствие атрибута getRoot у None и флешку не грузит.....

 

А ты сам какой способ используешь, первый?

 

P.S. И выводить подсказки (как на панели снарядов например) можно будет в обоих случаях?

Share this post


Link to post

Short link
Share on other sites

Единственное, что увидел, так что g_appLoader.getDefBattleApp() возвращает None.

Потому что это запрос боевого интерфейса, а точнее его питоновской части. Запусти реплей, поставь на паузу и тести с отладчика, например с того же Ориона. В ангаре понятное дело ты и будешь получать None.

А ты сам какой способ используешь, первый?

Я не использую никакой способ, я просто разобрался в свое время во всей этой шляпе и запилил гайдец. Там в комментариях написано что, где и как лучше юзать. Там комментов в несколько раз больше чем кода. Читай, поймешь что и зачем.

P.S. И выводить подсказки (как на панели снарядов например) можно будет в обоих случаях?

Работа флешки не зависит от способа ее загрузки. Боевой интерфейс предпочтительно грузить как UI, корневые флешки больше подходят для кросс-интерфеса (ангар+боевой), к примеру что-то типа мессенджера или чего-то в этом роде. В комментах там все это прописано. Что, где, зачем и как, что и почему от какого класса наследуется и т.д. Ангарный интерфейс можно собрать унаследовав нужные классы, если тебе не нужно окно, можно просто заюзать не window класс, а корневой UI, что-то типа daapiModule или чего-то в этом духе. Копайте код уже самостоятельно, базу я вам скинул. Хотя может потом еще чего интересного кину. Времени пока немного, но есть кое-какие мысли по части использования AS3 вместо AS2 в боевом интерфейсе, надо будет проверить что и как. Найду чего интересного - скину.

Share this post


Link to post

Short link
Share on other sites

...надо перетерпеть AS2 =(

Можно подумать что AS3 решения с фиалками. Там хватает как плюсов, так и минусов.

Share this post


Link to post

Short link
Share on other sites

Можно подумать что AS3 решения с фиалками. Там хватает как плюсов, так и минусов.

Я заметил только плюсы)

Share this post


Link to post

Short link
Share on other sites

Я заметил только плюсы)

+1

Как минимум наличие класса документа снимает необходимость перемещать DAAPI на другие объекты.

Share this post


Link to post

Short link
Share on other sites

Я заметил только плюсы)

 

 

+1

Как минимум наличие класса документа снимает необходимость перемещать DAAPI на другие объекты.

 

Так, стоп! Мы говорим о сферическом AS3 в вкууме, или его конкретной реализации в танкаче? Там везде хватает говнеца, но AS3 ничем не лучше для реализации  того что есть.

Share this post


Link to post

Short link
Share on other sites

Обновил свой пост про Awesomium - http://www.koreanrandom.com/forum/topic/25477-/?p=279921

Очень круто. Избавлюсь наконец-то от AS. Если я не ошибаюсь для того что бы добавить в форму отступ с низу надо в настройки формы прописать useBottomBtns

 

Пример:

browserID = yield game_control.g_instance.browser.load(_url,  _title, showActionBtn=False, useBottomBtns=true, browserSize=_browserSize)

p.s По чему то выдает ошибку. Есть у кого идеи по этому поводу? 

Share this post


Link to post

Short link
Share on other sites

p.s По чему то выдает ошибку. Есть у кого идеи по этому поводу?

А документацию на yield читал? Это что-то типа return для функции-генератора. Плюс до кучи statement. Это синтаксическая ошибка инфа 100%.

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...