Jump to content
Korean Random
SV_Kirov

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

Recommended Posts

В FlashPlayer'е запускал что-ли?

Да. Хотя понимаю, что там вроде как работать не должен.

Edited by mitgard

Share this post


Link to post

Short link
Share on other sites

Да. Хотя понимаю, что там вроде как работать не должен.

Работать будет, если подключить swf-файлы к плееру и стартануть их.

Видел такой пример: https://github.com/jhakonen/wot-teamspeak-mod/issues/21#issuecomment-204791499

Share this post


Link to post

Short link
Share on other sites

А что насчет мыши? addEventListener требует первый параметр String, а в MouseEventEx.LEFT_BUTTON это uint. Или можно использовать класс flash.events.MouseEvent.

Share this post


Link to post

Short link
Share on other sites

Нихрена не могу понять, что я делаю не так...

var config:Object = null;
DebugUtils.LOG_DEBUG(json);
try
{
	config = JSON.parse(json);
}
catch (error:Error)
{
	config = null;
}
DebugUtils.LOG_DEBUG("Fucking!! " + config);
На выходе имеем

[GUI] (scripts/client/gui/Scaleform/Flash.py, 51): DEBUG.GUI ('{"alpha": 0.01}', ())
[GUI] (scripts/client/gui/Scaleform/Flash.py, 51): DEBUG.GUI ('Fucking!! null', ())
Собирается все без ошибок, это часть функции, получающей аргумент json через DAAPI.

На входе на питоне конструкция вида bpc.flashObject.as_applyConfig('{"alpha": 0.01}')

Share this post


Link to post

Short link
Share on other sites

Передавай как словарь, а получай как Object

Эээ тут момент такой есть, один из параметров список, скажем

{"alpha": 0.01, "size": [10, 20]}
Оно в таком раскладе отрезолвится?

Share this post


Link to post

Short link
Share on other sites

Эээ тут момент такой есть, один из параметров список, скажем

 

{"alpha": 0.01, "size": [10, 20]}
Оно в таком раскладе отрезолвится?
должно

Share this post


Link to post

Short link
Share on other sites

должно

Угу, вроде робит :)

 

bpc.flashObject.as_applyConfig({"alpha": 0.01, "size": [10, 20, [1, 2, {}]]})

DebugUtils.LOG_DEBUG("" + json.size);

[GUI] (scripts/client/gui/Scaleform/Flash.py, 51): DEBUG.GUI ('10,20,1,2,[object Object]', ())

 

Спасибо.

Share this post


Link to post

Short link
Share on other sites

Работать будет, если подключить swf-файлы к плееру и стартануть их.

Видел такой пример: https://github.com/jhakonen/wot-teamspeak-mod/issues/21#issuecomment-204791499

Прикольно. Собрал, но запустить там флеш не получилось, похоже нужна lobby.swf.

Можно ли опираться на гайд GPCracker по DAAPI, с учетом того, что теперь вроде как AS3 используется. И можно ли делать флешки на AS3 в FlashDevelop? А то несколько раз видел, что для AS3 нужен Adobe по-свежее.

Share this post


Link to post

Short link
Share on other sites

Можно ли опираться на гайд GPCracker по DAAPI, с учетом того, что теперь вроде как AS3 используется.

Классы другие, принципы те же. Как появится время - обновлю гайдец. Сам сейчас клепаю боевую флешку с вьюшкой-лоадером и панелями-компонентами BattleUI.

И можно ли делать флешки на AS3 в FlashDevelop?

Нужно. Хотя в принципе и адобом пользоваться никто не запрещает. Там немного разные принципы, но должно работать.

А то несколько раз видел, что для AS3 нужен Adobe по-свежее.

Честно говоря, там все зависит от компилятора. Лично я боевую сейчас делаю на AS3 в FlashDevelop.

Ладно, а то на работе длинные посты набивать не вариант, работать надо :)

Share this post


Link to post

Short link
Share on other sites

 

Подскажи, чем root flash отличается от UI.

Мне вот хочется, чтобы мой объект был не в отдельном окне, а в где-нибудь в ангаре.

Share this post


Link to post

Short link
Share on other sites

Подскажи, чем root flash отличается от UI. Мне вот хочется, чтобы мой объект был не в отдельном окне, а в где-нибудь в ангаре.

Рут флеш наследуется от класса Flash, UI от классов фреймворка. По факту, в случае с рутовой флешкой ты грузишь независимую флешку, в случае с UI - флешку грузит фреймворк. Соответственно, рутовой флешкой рулишь чисто ты, UI еще управляет фреймворк. Плюс еще фреймворк предоставляет часть методов для перегрузки, что местами упрощает даже разработку.

После перехода на AS3 поведение UI элементов аналогично ангарным, только в боевом режиме немного отличается структура интерфейса, в частности немного другой набор контейнеров.

В общем, там куча различий, но могу сказать, что использование корневой флешки оправдано в настоящее время только в двух случаях - если это устаревший AS2, который не сможет загрузиться фрейсворком (правда не факт, что картоха не выпилила его поддержку из Scaleform), в таком случае проще и эффективнее просто перейти на AS3, либо если эта флешка должна быть независимой от фреймворка, т.е. она не относится ни к боевой, ни к ангарной части интерфейса, а такие случаи довольно редкие.

Если в случае с AS2 набор классов был довольно малым, то сейчас в принципе можно без проблем конструктить как вьюшки, так и компоненты. Опять вопрос насчет разницы вьюшки и компонента.

Тут чем больше рассказываешь, тем больше нужно пояснять... Короч, буду писать гайдец - напишу, что, куда и зачем нужно. По крайней мере в части вещей боевого интерфейса уже успел разобраться.

Share this post


Link to post

Short link
Share on other sites

Adding DropdownMenu in 9.15.x:

import scaleform.clik.data.DataProvider;
import net.wg.gui.components.controls.DropdownMenu;
 
var data : Array = new Array();
data.push({"label":"Item 1"});
data.push({"label":"Item 2"});
var dataProv : DataProvider = new DataProvider(data);
ddownMenu = addChild(App.utils.classFactory.getComponent("DropdownMenu", DropdownMenu, {
    x: 10,
    y: 340,
    width: 200,
    itemRenderer: "DropDownListItemRendererSound",
    dropdown: "DropdownMenu_ScrollingList",
    menuRowCount: dataProv.length,
    dataProvider: dataProv,
    selectedIndex: 0
})) as DropdownMenu;

Does not work in 9.16_CT:

GUI(scripts/client/gui/Scaleform/Flash.py, 51): ERROR.GUI ('Error extracting object with linkage: DropdownMenu', ())
GUI(scripts/client/gui/Scaleform/Flash.py, 51): ERROR.GUI ('object with "DropdownMenu" linkage is not a component from library!', ())
GUI(scripts/client/gui/Scaleform/Flash.py, 51): ERROR.GUI ('object with "DropdownMenu" linkage can`t cast to [class DropdownMenu]', ())

Any ideas?

Edited by goofy67

Share this post


Link to post

Short link
Share on other sites

'.py'

class SaveShellsWindow(AbstractWindowView):

    def __init__(self):
        super(SaveShellsWindow, self).__init__()

    def _populate(self):
        super(SaveShellsWindow, self)._populate()

    def onWindowClose(self):
        self.destroy()

g_entitiesFactories.addSettings(ViewSettings("SaveShells", SaveShellsWindow, "SaveShells.swf", ViewTypes.WINDOW, None, ScopeTemplates.VIEW_SCOPE))

def saveShells_callback():
    g_appLoader.getDefLobbyApp().loadView("SaveShells") 

'.as'

package
{
	import net.wg.gui.components.controls.CheckBox;
	import net.wg.infrastructure.base.AbstractWindowView;
	import net.wg.gui.components.controls.SoundButton;
	
	public class SaveShells extends AbstractWindowView
	{
		//Основные кнопки
		private var soundButtonOk     : SoundButton;
        private var soundButtonCancel : SoundButton;
		private var soundButtonApply  : SoundButton;
		
		//Основной мод
		private var isEnabled           : CheckBox;
		
		public function SaveShells() 
		{
			super();
		}
		
		override protected function onPopulate() : void
        {
            super.onPopulate();
            width = 600;
            height = 400;
            window.title = "SaveShells Settings";
			
			soundButtonOk = addChild(App.utils.classFactory.getComponent("ButtonNormal", SoundButton, {
                width: 100,
                height: 25,
                x: 195,
                y: 365,
                label: "Ok"
            })) as SoundButton;

            soundButtonCancel = addChild(App.utils.classFactory.getComponent("ButtonNormal", SoundButton, {
                width: 100,
                height: 25,
                x: 305,
                y: 365,
                label: "Cancel"
            })) as SoundButton;
			
			soundButtonApply = addChild(App.utils.classFactory.getComponent("ButtonNormal", SoundButton, {
                width: 100,
                height: 25,
                x: 415,
                y: 365,
                label: "Apply"
            })) as SoundButton;
			
			
        }
		
	}
	
} 

Делал на вот этом каркасе. Но флешка не грузится. Ткните, куда почитать  :sry:

Share this post


Link to post

Short link
Share on other sites

1) Можно ли привязать расположение окна к одну из объектов?

2) Можно ли создать объект( текст, кнопку) без своего окна, прямо в ангаре, не редактируя оригинальные файлы.

 

P.S. никак не получается инициализировать DAAPI. Нету доступа к flashObject

Edited by mitgard

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...