Ekspoint Posted August 8, 2016 Share Posted August 8, 2016 Как в бою вызвать окно встроенного браузера? @ Quote Link to comment Short link Share on other sites More sharing options...
aks1983 Posted August 9, 2016 Share Posted August 9, 2016 Простым способом никак, в battle.swf нет класса BrowserWindow, который представляет собой окно браузера в лобби, и текстуры нет - LobbyApp_browserBgClassValue. Нужно делать флешку с текстурой и свой контроллер браузера, где реализовать открытие/закрытие/обработку ввода и пр. Наверное, стоит рассказать как работает браузер... # вот так можно открыть браузер в лобби: from gui.game_control import getBrowserCtrl getBrowserCtrl().load(url='http://ya.ru/')(lambda success: True) # более сложный (и правильный) пример: from adisp import process from gui.game_control import getBrowserCtrl @process def showBrowser(): # все аргументы: kwargs = { 'url': 'http://ya.ru/', # адрес, https://example.com 'title': None, # текст заголовка окна 'showActionBtn': True, # показывать кнопку "рефреш/стоп" 'showWaiting': True, # использовать крутящуюся шестерню во время загрузки контента 'browserID': None, # уникальный ID этого бразера, чтобы получать его через BrowserController.getBrowser(browserID) 'isAsync': False, # флаг асинхронности 'browserSize': None, # размер браузера, tuple([width,height]) 'isDefault': True, # флаг нестандартной текстуры 'callback': None, # callback, который получит сгененрированный browserID, если его не было в аргументах 'showCloseBtn': False, # показывать кнопку "закрыть" снизу 'useWhitelisting': False # начиная c 9.15.1 не используется } # пример browser_ctl = getBrowserCtrl() browserID = yield browser_ctrl.load(**kwargs) showBrowser() при этом происходит следующее: Получаем инстанс контроллера браузера BrowserController Вызываем асинхронный метод load() Он создаёт новый инстанс WebBrowser Создаёт каллбек на показ окна BrowserWindow после загрузки страницы Если в настоящий момент происходит создание браузера (ожидание п.2), добавляет создание в очередь WebBrowser представляет собой обертку над BigWorld.WebBrowserProvider - BigWorld.createBrowser(browserID). У этого объекта заполняется аттрибут script, который является подписчиком событий браузера (onAddConsoleMessage, onBeginLoadingFrame, onChangeCursor, onChangeTitle, onDocumentReady, onFailLoadingFrame, onFilterNavigation, onFinishLoadingFrame, onShowCreatedWebView, onWhitelistMiss), настраиваются обработчики кнопок и мыши, устанавливается текстура (имя) для рендеринга контента в неё. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted February 6, 2018 Share Posted February 6, 2018 (edited) @aks1983 привет. Стало нужно в окне логина вызвать браузер, но не смог вызвать его даже в лобби. В общем мне лень разбираться) Не подкинешь актуальный код? browserCtrl = dependency.descriptor(IBrowserController) browserCtrl.load(url='http://ya.ru/')(lambda success: True) дает ошибку AttributeError: '_ServiceDescriptor' object has no attribute 'load' Edited February 6, 2018 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted February 6, 2018 Author Share Posted February 6, 2018 class BrowserWindow(object): @process def browser(self, url, title, browserSize): yield skeletons.browserCtrl.load(url=url, title=title, browserSize=browserSize, showActionBtn=True, showCloseBtn=True, showWaiting=True) browserWindow = BrowserWindow() @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted February 6, 2018 Share Posted February 6, 2018 (edited) @Ekspoint мне все-таки интересно, почему в _ServiceDescriptor есть метод __get__, который игнорится Edited February 6, 2018 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted February 6, 2018 Author Share Posted February 6, 2018 1 минуту назад, SkepticalFox сказал: @Ekspoint мне все-таки интересно, почему в _ServiceDescriptor есть метод __get__, который игнорит load посмотрю может косяк картошки... @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted February 6, 2018 Share Posted February 6, 2018 10 minutes ago, Ekspoint said: посмотрю я вроде понял. это особенность питона и работы дескриптора __get__ надо, чтобы browserCtrl был членом класса @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted April 13, 2018 Author Share Posted April 13, 2018 в WebBrowser есть executeJavascript, хочу вызвать функцию, а оно ругается что ее нет 'BigWorld.WebBrowserProvider' object has no attribute 'executeJavascript' как быть? мне нужно добавить java код 1 @ Quote Link to comment Short link Share on other sites More sharing options...
DWG Posted April 14, 2018 Share Posted April 14, 2018 (edited) 20 часов назад, Ekspoint сказал: в WebBrowser есть executeJavascript, хочу вызвать функцию, а оно ругается что ее нет 'BigWorld.WebBrowserProvider' object has no attribute 'executeJavascript' как быть? мне нужно добавить java код Не получиться у тебя если думаешь вставить майнер или проигрывать видосы с рекламой. Внутри игровой браузер java не поддерживает. Edited April 14, 2018 by DWG 3 8 @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted April 14, 2018 Author Share Posted April 14, 2018 4 часа назад, DWG сказал: Не получиться у тебя если думаешь вставить майнер или проигрывать видосы с рекламой. Внутри игровой браузер java не поддерживает. идиот, мне для мода нужно 2 3 @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted April 14, 2018 Share Posted April 14, 2018 (edited) 28 minutes ago, Ekspoint said: идиот, мне для мода нужно попробуй локальный север в питоне создать и общаться с браузером через него хотя, конечно, тут уже от нужд мода стоит ориентироваться Edited April 14, 2018 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted April 14, 2018 Share Posted April 14, 2018 23 часа назад, Ekspoint сказал: в WebBrowser есть executeJavascript, хочу вызвать функцию, а оно ругается что ее нет 'BigWorld.WebBrowserProvider' object has no attribute 'executeJavascript' как быть? мне нужно добавить java код Так javascript или java? @ Quote Link to comment Short link Share on other sites More sharing options...
Ekspoint Posted April 14, 2018 Author Share Posted April 14, 2018 1 час назад, yepev сказал: Так javascript или java? javascript @ 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.