Tester
-
Content Count
26 -
Joined
-
Last visited
Posts posted by Tester
-
-
Помогите с компонентом UILoaderAlt.При загрузке изображений через него всегда искажаются их размеры. Если конечно не включить autoSize, но тогда нельзя изменять высоту с шириной, а нужно...Странно то, что свойства originalWidth и originalHeight всегда 27 и 17. -
-
...
...wg_battle.swc из найтликов XFW, за что XVM-Team отдельное спасибо.
GPCracker, посмотри в World_of_Tanks\res\packages\gui.pkg\gui\flash\swc\, думаю приятно удивишься.
- 1
-
GlowFilter настрой на окраску только внешней части изображения, обводка со свечением.
Спасибо, работает. Но я в смятении, ведь в справочнике говорится, что при inner = true свечение будет внутренним.
-
Подскажите, пожалуйста...
В примере ниже вырезка из кода, где я добавляю свечение для иконки техники в ушах обычным методом filters.
var playersPanel:* = (battlePage as BattlePage).playersPanel; var listItem:* = playersPanel.listRight.getItemByVehicleID(vehicleID); listItem.vehicleIcon.filters = [new GlowFilter()];
При этом свечение добавляется, но и сама иконка красится в цвет фильтра.
Предполагаю, это из за того, что иконка - это BitmapData объект, и к ней нужно применять фильтры через метод applyFilter. Но как правильно это сделать, какой должна быть запись, никак не могу разобраться...
-
from gui.shared import events, g_eventBus
def onLobbyLoaded(event):
pass
g_eventBus.addListener(events.GUICommonEvent.LOBBY_VIEW_LOADED, onLobbyLoaded)- 4
-
Да я уже начал догадываться, что это моя локальная проблема. Сломал FD как то похоже, переустановлю, проверю....
А про debug не знал, спасибо. Ну и за решение вопроса еще раз спасибо.
-
...
Спасибо за видео. На счет полезности согласен полностью.
В Adobe моей ошибкой было создание swf через тестирование (Ctrl + Enter), а не обычную публикацию. Хотя на выходе в том и другом случаях файлы идентичны.
А вот в FD и прежде все делал как на видео. Даже специально после еще все повторил шаг за шагом. Визуально содержимое верное, собирается без ошибок, а в итоге не работает. Но это не критично, позже еще попробую разобраться в причине.
Единственное, меня смущает то, что размеры собранных флешек в Adobe и FD отличаются (в том числе и у Вас на видео) - 2КБ против 3КБ. Решил для себя для работы с флешем отдать преимущество Adobe.
-
...
Ого, неожиданно...
Спасибо большое! Действительно работает.
В Adobe правда выдает ошибку вывода при компиляции, но в клиенте все работает. Не знаю, нормально это или нет.
VerifyError: Error #1014: Class net.wg.gui.battle.components::BattleUIDisplayable could not be found.ReferenceError: Error #1065: Variable PPHandlerInjector is not defined.
А вот переделать под FD пока не получилось. Кажется все правильно собрал, компиляция идет без ошибок, но не работает почему то. В логе тоже без ошибок.
Но это из за моих ограниченных познаний, набираюсь опыта.
-
Только сейчас смог посмотреть что там. Получить этот список можно только пересобрав battle.swf
По идее надо менять в VehicleMinimapEntry функции highlight/unhighlight, но для этого надо пересобирать minimap.swf
SkepticalFox, спасибо большое за помощь. Печально конечно, но что делать, попробую детальней изучить работу с флешем. Это ведь все еще актуальный гайд или есть варианты лучше/проще? Ну, не считая полную декомпиляцию и компиляцию с правкой ошибок и кода.
-
не, нельзя.
если только грузить свою флешку...
Пробую через флешку, но застрял.
Есть класс:
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;
-
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'ы, ну или подключиться к ним?
-
Было где-то в питоне такое...
Вселил надежду, а то отчаялся, все никак не могу найти. Сможешь посмотреть как будет возможность? Не сочти за наглость.
-
Ребят, можно ли через питон отловить событие наведения мыши на какого либо игрока в ушах во время боя? Ведь при этом на миникарте иконки подсвечиваются. Или это реализовано через внутренние связи во флеше и в питоне никакой функции для обработки этого события нет?
-
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)
Спасибо большое, попробую позже.
Ага, уже тоже сравнил, принцип тот же.
-
Это да. :-) Но...Не высокие уровни познаний часто порождают ложные уверенности =)
Сейчас реализована костыльная подгрузка через встроенную в главную флешку battle.swf функцию loadSwf. Нужно отслеживать процесс загрузки, после сообщать питону о ее завершении, посла чего уже питон может обращаться к флешке. И нет единого сценария для флешек боевого интерфейса.
В 0.9.15.1 добавили алгоритм их загрузки, который прослеживается при ковырянии новых исходников. Можно увидеть отталкиваясь, например, от addViewComponents (сейчас могу ошибаться в точности имени функции). Вот и возникла ложная уверенность, что по этому алгоритму можно загрузить и свои флешки.
-
Ну почему же...Эта тема потеряла актуальность.
Корневая флешка грузится и в 0.9.15.1 по аналогичному сценарию с небольшими изменениями в python'е и созданием флешки на as3.
А вот сценарий для вложенной изменился в плане загрузки. Мой невысокий уровень познаний в программировании пока не позволяет найти новый способ, но уверен, что он будет даже проще, чем был с as2.
-
Подскажи пожалуйста, а в 0.9.15.1 на что заменить getRoot().loadSwf? С остальным надеюсь проблем не возникнет, главное найти новый способ загрузки вложенной флешки.
-
Запилил таки гайдец.
GPCracker, громадное, искреннее спасибо.
Сижу разбираюсь, изучаю понемногу. Благо есть от чего отталкиваться уже.
По первому способу все заработало буквально с первого раза. Пока с ним работаю.
На втором застопорился с ошибкой. Пока не разбирался детально, отложил изучение второго способа на потом. Единственное, что увидел, так что g_appLoader.getDefBattleApp() возвращает None. Соответственно питон ругается на отсутствие атрибута getRoot у None и флешку не грузит.....
А ты сам какой способ используешь, первый?
P.S. И выводить подсказки (как на панели снарядов например) можно будет в обоих случаях?
-
Оке миниинструкция по боевому флешу, мб кому пригодится.
Внутри battle.swf (главного холдера боевого флеша) есть метод прямо в корне, называется loadSwf, его мы и будем использовать как загрузчик нашего флеша
Писать флеш для боя будем на AS2, так как сам бой тоже на AS2 написан.
Советую Использовать для написания FlashDevelop а для сборки Flash Pro (через него embed графики в AS2 делается).
Вот пример внедрения в бой клик изменение как боевых елеменов, так и связь питон <=> флеш (маркера это не боевой флеш)
Итак поехали.
У нас есть логика на питоне, не важно что она делает, она работает всегда, внутри нее у нас вызовы обвязки флеша на питоне.
Обвязку флеша на питоне нужно контролировать (инитить при создании боевого интерфейса, и "нуллить" при дестрое боевого флеша) - клик клик
Итак когда у нас обвязка флеша на питоне уже сама создается и дестроится, пора дергать боевой флеш и грузить нашу флешку - клик клик клик клик
А дальше все просто, реализуйте любые визуальности на флеше, гоняйте данные туда сюда, меняйте бой как вам угодно =)
Вот как дергается флеш из питона на примере ивента, изменение размера экрана - клик клик
UP перечитал эту пелену, не неумею я в туторы =)
Никто случайно не сохранил скрины по ссылкам? Или может POLIROID обновишь их? Очень прошу. Пелена или нет, но хоть какая то информация была бы для изучения. А то было уже обрадовался, что смогу в боевой флеш, но........
-
StranikS_Scan, а где "Select the attributes source" искать? Что то туплю, не могу найти.
-
StranikS_Scan, а сохранение редактором переменных запланировано или все же баг?
Выполняем код:
text = 'bla bla' print text
Результат конечно же bla bla. Удаляем первую строку и выполняем:
print text
Вместо ожидаемой ошибки NameError: name 'text' is not defined, результат прежний: bla bla. Это конечно же не критично, просто стало интересно. Я так понимаю принцип работы основан на Python Shell.
А вообще искреннее спасибо за проект.
-
-
Да нет, к сожалению, не знаю...
Сам вот пытаюсь разобраться в правке кода по Вашему гайду. Ведь большинство флеша через Adobe Flash не соберешь - довольно много ошибок после декомпиляции.
А вопрос возник потому, что я попробовал пропустить 3 шаг с подменой вызова класса. Внес в нужный мне класс изменения и вшил обратно через Develop. Все корректно заработало.
Правда проверял я на дамаг панели (хоть она и компилится корректно в Adobe Flash). Возможно это единичный случай и мне просто повезло, что все прошло хорошо...
Как создать форму(Окно) в ангаре
in ActionScript & Python
Posted · Edited by Tester
Мой косяк... Нужно было отключить сохранение пропорций (maintainAspectRatio), он ведь включен по умолчанию. Правда при включенном остается проблема искажения, так как по умолчанию ставится размер 27х17 и соответственно от него устанавливаются пропорции. Странно, что после загрузки разрабы не обновляют переменные с оригинальными размерами.