GPCracker Posted June 5, 2015 Share Posted June 5, 2015 (edited) 1. Как сделать вывод всех ошибок ActionScript в лог питона... Или куда еще. Такое ощущение, как будто вывод где-то лочится. Через методы DebugUtils ничего вывести не получается. Не, можно конечно поднять DAAPI и передавать данные через него, но это не решение для отладки ошибок, возникающих в AS-классах WG. Отловленные ошибки в картошкинских классах передаются через DebugUtils.LOG_***(), но этот вывод куда-то про*****. Если я задаю какие-то элементарные вопросы, прошу не закидывать помидорами и всем, что попадется под руку, ибо я во флешках только пытаюсь разобраться. 2. Никак не получается заюзать ВГ-шный класс (ScrollPane и производные) и создать scroll-область в окне. Базовые элементы (чекбокс, пока с ним играюсь) создаются нормально. Сыплется на валидации, если ее пропустить, все равно нормально не отображается. TypeError: Error #1009: Cannot access a property or method of a null object reference. at scaleform.clik.core::UIComponent/configUI() at scaleform.clik.core::UIComponent/validateNow() at scaleform.clik.utils::Constraints/update() at scaleform.clik.core::UIComponent/draw() at scaleform.clik.core::UIComponent/validateNow() import net.wg.gui.components.controls.ResizableScrollPane; ... this.testScrollPane = new ResizableScrollPane(); this.testScrollPane.width = 500; this.testScrollPane.height = 300; this.testScrollPane.x = 0; this.testScrollPane.y = 0; this.testScrollPane.scrollBar = "ScrollBar"; this.testScrollPane.target = this.testUIComponent; this.testScrollPane.validateNow(); Только вот в отличие от питона, тут хрен разберешься, что и где крашится... Может кто сталкивался с аналогичной проблемой? З.Ы. У картофана во всех UI-классах нахожу только определение переменных нужного типа (базовые элементы GUI), но никаких конструкторов и установок координат/размеров нет... Куда они это все попрятали? Интересно, как они сами это все рисуют... Edited June 5, 2015 by GPCracker @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted June 6, 2015 Share Posted June 6, 2015 (edited) 1. Как сделать вывод всех ошибок ActionScript в лог питона... Или куда еще. Такое ощущение, как будто вывод где-то лочится. Через методы DebugUtils ничего вывести не получается. Не, можно конечно поднять DAAPI и передавать данные через него, но это не решение для отладки ошибок, возникающих в AS-классах WG. Отловленные ошибки в картошкинских классах передаются через DebugUtils.LOG_***(), но этот вывод куда-то про*****. Если я задаю какие-то элементарные вопросы, прошу не закидывать помидорами и всем, что попадется под руку, ибо я во флешках только пытаюсь разобраться. странно... import net.wg.gui.components.controls.ResizableScrollPane; ... this.testScrollPane = new ResizableScrollPane(); this.testScrollPane.width = 500; this.testScrollPane.height = 300; this.testScrollPane.x = 0; this.testScrollPane.y = 0; this.testScrollPane.scrollBar = "ScrollBar"; this.testScrollPane.target = this.testUIComponent; this.testScrollPane.validateNow(); А можно больше кода? З.Ы. У картофана во всех UI-классах нахожу только определение переменных нужного типа (базовые элементы GUI), но никаких конструкторов и установок координат/размеров нет... Куда они это все попрятали? Интересно, как они сами это все рисуют... А где вы находите эти UI классы? В Application.swf? Edited July 3, 2015 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
GPCracker Posted June 6, 2015 Author Share Posted June 6, 2015 (edited) DebugUtils.LOG_*** норм работает. Какие у вас моды?Много чего стоит... Надо будет на чистом клиенте попробовать. Раньше, в 0.9.7, логи норм выводились, в 0.9.8.1 куда-то пропали...А зачем вы юзаете картошкинские файлы AS? Можно же заоверрайдить их через флешку, которая подгружается из питонаЗаоверрайдить можно все, но я не горю желанием писать костыли и велосипеды... Заюзать готовый скрипт как-то интереснее будет.То, что я приложил как лог, это захвачено через try-catch, передано через DAAPI и выведено питоном) Но отлаживать так все не получится. Тем более что неотловленные ошибки почему-то тоже теряются, раньше вываливались в лог... А можно больше кода? "Да не вопрос)" package { import flash.events.*; import flash.display.*; import scaleform.clik.core.UIComponent; import net.wg.infrastructure.base.AbstractWindowView; import net.wg.gui.components.controls.SoundButton; import net.wg.gui.components.controls.CheckBox; import net.wg.gui.components.advanced.FieldSet; import net.wg.gui.components.controls.ScrollBar; import net.wg.gui.components.controls.ResizableScrollPane; public class TestWindow extends AbstractWindowView { public var testSoundButton:SoundButton; public var testCheckBox:CheckBox; public var testFieldSet:FieldSet; public var testUIComponent:UIComponent; public var testScrollPane:ResizableScrollPane; public function TestWindow() { super(); this.canClose = true; return; } override protected function configUI() : void { super.configUI(); this.testSoundButton = App.utils.classFactory.getComponent("ButtonNormal", SoundButton); this.testSoundButton.width = 100; this.testSoundButton.x = 300; this.testSoundButton.y = 379; this.testSoundButton.label = "Test"; this.testSoundButton.validateNow(); this.testSoundButton.addEventListener(MouseEvent.CLICK, this.onTestBtnClick, false, 0, true); this.addChild(this.testSoundButton); this.testCheckBox = App.utils.classFactory.getComponent("CheckBox", CheckBox); this.testCheckBox.x = 25; this.testCheckBox.y = 25; this.testCheckBox.label = "Fucking test checkBox!"; this.testCheckBox.validateNow(); this.testCheckBox.width = this.testCheckBox.textField.textWidth + 25; this.testFieldSet = App.utils.classFactory.getComponent("FieldSet", FieldSet); this.testFieldSet.textField.htmlText = "<b><font color='#FF00FF'>The fucking FieldSet!!!</font></b>"; this.testFieldSet.width = 400; this.testFieldSet.height = 200; this.testFieldSet.textField.width = this.testFieldSet.width; this.testFieldSet.x = 0; this.testFieldSet.y = 0; this.testFieldSet.validateNow(); this.testFieldSet.addChild(this.testCheckBox); try { this.testUIComponent = new UIComponent(); this.width = 500; this.height = 500; this.testUIComponent.validateNow(); this.testScrollPane = App.utils.classFactory.getComponent("ResizableScrollPane", ResizableScrollPane); this.py_logError("this.testScrollPane" + String(this.testScrollPane)); //this.testScrollPane = new ResizableScrollPane(); this.testScrollPane.width = 500; this.testScrollPane.height = 300; this.testScrollPane.x = 0; this.testScrollPane.y = 0; this.testScrollPane.scrollBar = "ScrollBar"; this.testScrollPane.target = this.testUIComponent; try { this.testScrollPane.validateNow(); } catch(err:Error) { this.py_logError(err.getStackTrace()); } this.py_logError(String(this.testScrollPane.scrollBar)); this.py_logError(String(this.testScrollPane.target)); this.py_logError(String(this.testScrollPane)); this.testUIComponent.addChild(this.testFieldSet); this.addChild(this.testScrollPane); } catch(err:Error) { this.py_logError(err.getStackTrace()); } return; } override protected function onPopulate() : void { this.width = 600; this.height = 400; if (this.window) { window.title = "Fucking test window!"; window.useBottomBtns = true; } super.onPopulate(); return; } private function onTestBtnClick(event:MouseEvent) : void { this.testCheckBox.selected = !this.testCheckBox.selected; this.testSoundButton.label = String(this.py_as2py(1, 2, 3)); return; } public var py_as2py:Function; public var py_logError:Function; public function as_py2as(arg1:Number, arg2:Number) : String { return String(arg1 + arg2) } } } И где addChild?Все есть. Просто контрол сыплется на валидации...var testScrollPane: ResizableScrollPane = new ResizableScrollPane();переменная определена как атрибутА где вы находите эти UI классы? В Application.swf?декомпилирую lobby.swf. Это по сути и есть Application.swf.Кстати в xfw собираются улучшить ситуацию с контроллами?Не знаю, не мониторю этот раздел. Хммм. А разрабы нехило перекопали python scripts/common/debug_utils.py в последних патчах... Edited June 6, 2015 by GPCracker @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted June 6, 2015 Share Posted June 6, 2015 (edited) this.testScrollPane = App.utils.classFactory.getComponent("ResizableScrollPane", ResizableScrollPane); this.testScrollPane.width = 500; this.testScrollPane.height = 300; this.testScrollPane.x = 0; this.testScrollPane.y = 0; this.testScrollPane.scrollBar = "ScrollBar"; this.testScrollPane.target = this.testUIComponent; try { this.testScrollPane.validateNow(); } catch(err:Error) { this.py_logError(err.getStackTrace()); } но никаких конструкторов и установок координат/размеров нет... Куда они это все попрятали? this.testScrollPane = (this as UIComponent).addChild(App.utils.classFactory.getComponent("ResizableScrollPane", ResizableScrollPane, { width: 500, height: 300, x: 0, y: 0, scrollBar: "ScrollBar"})) as ResizableScrollPane; try { this.testScrollPane.validateNow(); } catch(err:Error) { DebugUtils.LOG_DEBUG(err.message); DebugUtils.LOG_DEBUG(err.getStackTrace()); } Так вроде тоже можно... Хммм. А разрабы нехило перекопали python scripts/common/debug_utils.py в последних патчах... http://www.koreanrandom.com/forum/topic/15280-pjorion-редактирование-компиляция-декомпиляция-обф/?p=263752 Edited July 3, 2015 by ShadowHunterRUS @ Quote Link to comment Short link Share on other sites More sharing options...
IzeBerg Posted August 16, 2016 Share Posted August 16, 2016 (edited) del. Edited August 16, 2016 by IzeBerg @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
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.