Actionscript 3 图形用户界面窗口的代码

Actionscript 3 图形用户界面窗口的代码,actionscript-3,user-interface,Actionscript 3,User Interface,有人会如何编写一个“窗口”?我开始制作GUI,我想学习如何编写GUI。一个是可蒙皮的,一个是在运行时实际循环并创建自身的。我知道这可能有点模糊,所以我会补充细节 真正“创造”自己的人。我看过的大多数GUI教程都依赖于刚刚添加到屏幕上的“图像”。我希望能够在我的窗口中使用皮肤。其中,我的“皮肤”只是“边界”的集合。然后,当我插入window.create(50,50)其中50,50是我的高度和宽度时,它会沿着皮肤创建该窗口 我理解它可能就像一种语言绘制一个矩形一样,它只是遵循一组不同的规则(也许?

有人会如何编写一个“窗口”?我开始制作GUI,我想学习如何编写GUI。一个是可蒙皮的,一个是在运行时实际循环并创建自身的。我知道这可能有点模糊,所以我会补充细节

真正“创造”自己的人。我看过的大多数GUI教程都依赖于刚刚添加到屏幕上的“图像”。我希望能够在我的窗口中使用皮肤。其中,我的“皮肤”只是“边界”的集合。然后,当我插入
window.create(50,50)
其中50,50是我的高度和宽度时,它会沿着皮肤创建该窗口

我理解它可能就像一种语言绘制一个矩形一样,它只是遵循一组不同的规则(也许?)。然而,尽管我掌握了谷歌fu的所有技能,但我找不到一个教程教我这一点


请帮忙。我没有包括你可以看到的我使用的语言,因为我相信我只需要知道如何创建一个。无论如何,我使用的是ActionScript3。一个教程就可以了,甚至是一个具有此功能的类,我只研究代码。或者,如果您知道一本关于GUI及其编程的书,那么可能是一本完整的书:D

纯As3.0GUI编码非常麻烦。我试着用谷歌搜索,但结果不太好。无论如何,对于我的情况,我使用SWC生成,并进行类映射和自定义。但我不确定最好的方法。换句话说,我使用图书馆。这给了我想要的窗口图表组件的高抽象性。请参见下图


这可能非常困难和复杂,也可能非常容易,这取决于解决方案的灵活性。你首先需要设计你的程序结构和解决问题的方法

我喜欢从API的角度来看它应该是什么样子。我想我会创建这样一个GUI元素:

var wholeGui:MyGUI = new MyGUI();
var window:IGuiElement = new GuiWindow(dataObject, skinObject);
wholeGui.addElement(window);
function asSprite():Sprite;
public function asSprite():Sprite {
    return this;
}
那么你需要什么呢

1) 对象,该对象将管理所有GUI元素。为什么?这仅仅是因为如果用户在您的小窗口上单击“X”,您的GUI元素不应该被自己破坏。wholeGui对象将管理它们并侦听任何事件,包括那些将破坏它们的事件。如果这个交互将是复杂的,您可以考虑为整个GUI GUI对象和窗口对象创建交互事件。 2) GUI对象的接口。这里的一些问题是AS3实际上没有用于Sprite的接口,您希望与它进行交互,就像与扩展Sprite进行交互一样。这里的解决方法是在此接口中有如下声明:

var wholeGui:MyGUI = new MyGUI();
var window:IGuiElement = new GuiWindow(dataObject, skinObject);
wholeGui.addElement(window);
function asSprite():Sprite;
public function asSprite():Sprite {
    return this;
}
您在GUI窗口中的实现如下所示:

var wholeGui:MyGUI = new MyGUI();
var window:IGuiElement = new GuiWindow(dataObject, skinObject);
wholeGui.addElement(window);
function asSprite():Sprite;
public function asSprite():Sprite {
    return this;
}
当然,您的GuiWindow类应该扩展Sprite。然后您可以通过编写例如:window.asSprite.startDrag()来访问它的Sprite属性和方法

此界面应提供在GUI元素上操作所需的功能

3) 在这个示例GUI窗口中,为GUI元素初始化

4) 为将注入元素的数据初始化。如果要从某个位置动态加载数据,则需要处理无法提供数据的情况—但该逻辑将在您的窗口内

5) 为您的皮肤初始化-这样您就能够动态创建一个皮肤对象,并使用它以您想要的方式创建窗口

这只是几点需要考虑的问题。

另外,在创建GUI窗口对象之后,最好用数据填充它,而不是在构造函数中,因为这样你们就可以可视化加载过程了