Jump to content
Korean Random

Tester

User
  • Content Count

    26
  • Joined

  • Last visited

Posts posted by Tester


  1. Интуиция мне подсказывает, что это какой-то специфичный компонент. А UILoader не пробовал?

     

    Мой косяк... Нужно было отключить сохранение пропорций (maintainAspectRatio), он ведь включен по умолчанию. Правда при включенном остается проблема искажения, так как по умолчанию ставится размер 27х17 и соответственно от него устанавливаются пропорции. Странно, что после загрузки разрабы не обновляют переменные с оригинальными размерами.


  2. Помогите с компонентом UILoaderAlt.

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

    Странно то, что свойства originalWidth и originalHeight всегда 27 и 17.


  3. GlowFilter настрой на окраску только внешней части изображения, обводка со свечением.

     

    Спасибо, работает. Но я в смятении, ведь в справочнике говорится, что при inner = true свечение будет внутренним.

     

    http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/filters/GlowFilter.html#inner


  4. Подскажите, пожалуйста...

     

    В примере ниже вырезка из кода, где я добавляю свечение для иконки техники в ушах обычным методом filters.

    var playersPanel:* = (battlePage as BattlePage).playersPanel;
    var listItem:* = playersPanel.listRight.getItemByVehicleID(vehicleID);
    listItem.vehicleIcon.filters = [new GlowFilter()];
    

    При этом свечение добавляется, но и сама иконка красится в цвет фильтра.

     

    Предполагаю, это из за того, что иконка - это BitmapData объект, и к ней нужно применять фильтры через метод applyFilter. Но как правильно это сделать, какой должна быть запись,  никак не могу разобраться...


  5. ...

    Спасибо за видео. На счет полезности согласен полностью.

    В Adobe моей ошибкой было создание swf через тестирование (Ctrl + Enter), а не обычную публикацию. Хотя на выходе в том и другом случаях файлы идентичны.

    А вот в FD и прежде все делал как на видео. Даже специально после еще все повторил шаг за шагом. Визуально содержимое верное, собирается без ошибок, а в итоге не работает. Но это не критично, позже еще попробую разобраться в причине.

    Единственное, меня смущает то, что размеры собранных флешек в Adobe и FD отличаются (в том числе и у Вас на видео) - 2КБ против 3КБ. Решил для себя для работы с флешем отдать преимущество Adobe.


  6. ...

     

    Ого, неожиданно...

    Спасибо большое! Действительно работает.

     

    В Adobe правда выдает ошибку вывода при компиляции, но в клиенте все работает. Не знаю, нормально это или нет.

    VerifyError: Error #1014: Class net.wg.gui.battle.components::BattleUIDisplayable could not be found.

    ReferenceError: Error #1065: Variable PPHandlerInjector is not defined.

    А вот переделать под FD пока не получилось. Кажется все правильно собрал, компиляция идет без ошибок, но не работает почему то. В логе тоже без ошибок.

    Но это из за моих ограниченных познаний, набираюсь опыта.


  7. Только сейчас смог посмотреть что там. Получить этот список можно только пересобрав battle.swf

    По идее надо менять в VehicleMinimapEntry функции highlight/unhighlight, но для этого надо пересобирать minimap.swf

    SkepticalFox, спасибо большое за помощь. Печально конечно, но что делать, попробую детальней изучить работу с флешем. Это ведь все еще актуальный гайд или есть варианты лучше/проще? Ну, не считая полную декомпиляцию и компиляцию с правкой ошибок и кода.


  8. не, нельзя.

    если только грузить свою флешку...

    Пробую через флешку, но застрял.

     

    Есть класс:

    package net.wg.gui.battle.random.views.stats.components.playersPanel.events
    {
        import flash.events.*;
        import net.wg.gui.battle.random.views.stats.components.playersPanel.list.*;
    
        public class PlayersPanelItemEvent extends Event
        {
            public var playersListItem:PlayersPanelListItem = null;
            public var holderItemID:Number = -1;
            public var mEvent:MouseEvent = null;
            public static const ON_ITEM_OVER:String = "onPlayersPanelItemOver";
            public static const ON_ITEM_OUT:String = "onPlayersPanelItemOut";
            public static const ON_ITEM_CLICK:String = "onPlayersPanelItemClick";
    
            public function PlayersPanelItemEvent(param1:String, param2:PlayersPanelListItem, param3:Number, param4:MouseEvent, param5:Boolean = false, param6:Boolean = false)
            {
                this.playersListItem = param2;
                this.holderItemID = param3;
                this.mEvent = param4;
                super(param1, param5, param6);
                return;
            }
        }
    }
    

    Подписываемся на эти события так:

    var _loc_2:* = null;
    
    for each (_loc_2 in this._panelListItems)
    {
        _loc_2.addEventListener(PlayersPanelItemEvent.ON_ITEM_OVER, this.onPlayersPanelItemOverHandler);
        _loc_2.addEventListener(PlayersPanelItemEvent.ON_ITEM_OUT, this.onPlayersPanelItemOutHandler);
        _loc_2.addEventListener(PlayersPanelItemEvent.ON_ITEM_CLICK, this.onPlayersPanelItemClickHandler);
    }
    

    Можно ли как то получить список элементов, так как тот же _panelListItems из PlayersPanelList закрыт?

    private var _panelListItems:Vector.<PlayersPanelListItem> = null;

  9.       private function onMouseOverHandler(param1:MouseEvent) : void
          {
             var _loc2_:PlayersPanelItemEvent = new PlayersPanelItemEvent(PlayersPanelItemEvent.ON_ITEM_OVER,this,this.holderItemID,param1);
             dispatchEvent(_loc2_);
             this.dynamicSquad.onItemOver();
          }
          
          private function onMouseOutHandler(param1:MouseEvent) : void
          {
             var _loc2_:PlayersPanelItemEvent = new PlayersPanelItemEvent(PlayersPanelItemEvent.ON_ITEM_OUT,this,this.holderItemID,param1);
             dispatchEvent(_loc2_);
             this.dynamicSquad.onItemOut();
          }
    

    Похоже, к сожалению, что все таки обрабатывается внутри флеш. В том числе и события подсветки иконок на карте и события, связанные с динамическими взводами.

    С питона случайно никак нельзя перехватывать флешовые Event'ы, ну или подключиться к ним?


  10. Ребят, можно ли через питон отловить событие наведения мыши на какого либо игрока в ушах во время боя? Ведь при этом на миникарте иконки подсвечиваются. Или это реализовано через внутренние связи во флеше и в питоне никакой функции для обработки этого события нет?


  11.  

    from gui.app_loader.loader import g_appLoader
    from gui.Scaleform.framework.entities.View import View
    from gui.Scaleform.framework import g_entitiesFactories, ViewSettings, ViewTypes, ScopeTemplates
    from gui.app_loader.settings import APP_NAME_SPACE
    from gui.shared import events, g_eventBus
    
    class NewFragCorrelationBar(View):
        def __init__(self):
            super(NewFragCorrelationBar, self).__init__()
    
    g_entitiesFactories.addSettings(
            ViewSettings(
            'NewFragCorrelationBar',
            NewFragCorrelationBar,
            'NewFragCorrelationBar.swf',
            ViewTypes.WINDOW,
            None,
            ScopeTemplates.DEFAULT_SCOPE
        )
    )
    
    def onAppInitialized(event):
        if event.ns == APP_NAME_SPACE.SF_BATTLE:
            app = g_appLoader.getApp(event.ns)
            if app is not None:
                app.loadView('NewFragCorrelationBar')
    
    g_eventBus.addListener(events.AppLifeCycleEvent.INITIALIZED, onAppInitialized)
     

     

    Спасибо большое, попробую позже.

     

    , мне кажется, или это то же самое, что раньше делали для ангара?

    Ага, уже тоже сравнил, принцип тот же.


  12. Не высокие уровни познаний часто порождают ложные уверенности =)

    Это да. :-) Но...

    Сейчас реализована костыльная подгрузка через встроенную в главную флешку battle.swf функцию loadSwf. Нужно отслеживать процесс загрузки, после сообщать питону о ее завершении, посла чего уже питон может обращаться к флешке. И нет единого сценария для флешек боевого интерфейса.

    В 0.9.15.1 добавили алгоритм их загрузки, который прослеживается при ковырянии новых исходников. Можно увидеть отталкиваясь, например, от addViewComponents (сейчас могу ошибаться в точности имени функции). Вот и возникла ложная уверенность, что по этому алгоритму можно загрузить и свои флешки.


  13. Эта тема потеряла актуальность.

    Ну почему же...

    Корневая флешка грузится и в 0.9.15.1 по аналогичному сценарию с небольшими изменениями в python'е и созданием флешки на as3.

    А вот сценарий для вложенной изменился в плане загрузки. Мой невысокий уровень познаний в программировании пока не позволяет найти новый способ, но уверен, что он будет даже проще, чем был с as2.


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

    attachicon.gifFlash Interaction.zip

     

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

     

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

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

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

     

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

     

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


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

     

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

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

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

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

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

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

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

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

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

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

     

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

     

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


  16. StranikS_Scan, а сохранение редактором переменных запланировано или все же баг?

     

    Выполняем код:

    text = 'bla bla'
    print text

    Результат конечно же bla bla. Удаляем первую строку и выполняем:

    print text

    Вместо ожидаемой ошибки NameError: name 'text' is not defined, результат прежний: bla bla. Это конечно же не критично, просто стало интересно. Я так понимаю принцип работы основан на Python Shell.

     

    А вообще искреннее спасибо за проект.


  17. Да нет, к сожалению, не знаю...

    Сам вот пытаюсь разобраться в правке кода по Вашему гайду. Ведь большинство флеша через Adobe Flash не соберешь - довольно много ошибок после декомпиляции.

     

    А вопрос возник потому, что я попробовал пропустить 3 шаг с подменой вызова класса. Внес в нужный мне класс изменения и вшил обратно через Develop. Все корректно заработало.

     

    Правда проверял я на дамаг панели (хоть она и компилится корректно в Adobe Flash). Возможно это единичный случай и мне просто повезло, что все прошло хорошо...

×
×
  • Create New...