0

有人会如何编写“窗口”?我开始制作一个 GUI,我想学习如何编写一个 GUI。一种可以换肤,另一种可以在运行时循环并自行创建。我知道这可能有点模糊,所以我将添加细节。

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

我知道它可能就像语言绘制矩形一样遵循,它只是遵循一组不同的规则(也许?)。但是,对于我所有的 Google-fu 技能,我找不到可以教我这个的教程。

请帮忙。如您所见,我没有包括我使用的语言,因为我相信我只需要知道如何创建一个。无论如何,我正在使用 Actionscript 3。一个教程就可以了,甚至是一个具有此功能的单一类,我将只研究代码。或者如果你知道一个,也许是一本关于 GUI 和编程的书:D

4

2 回答 2

1

纯 As3.0 GUI 编码比较麻烦。我尝试使用谷歌搜索,但效果不佳。无论如何,对于我的情况,我使用 SWC、类映射和自定义生成。但我不确定最好的方法。以其他方式,我使用bit101库。这给了我想要的WindowChartsComponets容易的高度抽象。见下图。

在此处输入图像描述

于 2012-08-22T06:48:24.023 回答
0

做起来可能非常困难和复杂,也可能非常容易,这取决于您的解决方案应该有多灵活。您首先需要设计程序的结构和解决问题的方法。

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

var wholeGui:MyGUI = new MyGUI();
var window:IGuiElement = new GuiWindow(dataObject, skinObject);
wholeGui.addElement(window);

那么你需要什么?

1) 将管理所有 GUI 元素的对象。为什么?仅仅是因为如果用户在您的小窗口上单击“X”,您的 GUI 元素不应该被自己破坏。WholeGui 对象将管理它们并侦听任何事件,包括那些会破坏它们的事件。如果这种交互会很复杂,您可以考虑为整个Gui 对象和您的窗口对象之间的交互创建自定义事件。

2) GUI 对象的接口。这里的一些问题是 AS3 实际上没有 Sprite 的接口,你想像扩展 Sprite 一样与它进行交互。这里的解决方法是在这个接口中有一个这样的声明:

function asSprite():Sprite;

您在 GuiWindow 中的实现将如下所示:

public function asSprite():Sprite {
    return this;
}

当然,您的 GuiWindow 类应该扩展 Sprite。然后,您可以通过编写示例来访问它的 Sprite 属性和方法: window.asSprite.startDrag();

该界面应该为您提供操作 GUI 元素所需的能力。

3) 你的 GUI 元素的类,在这个例子中是 GuiWindow。

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

5) 为您的皮肤分类 - 这样您就可以动态创建一个皮肤对象并使用它以您想要的方式创建您的窗口。

这只是需要考虑的几个想法。

PS。在创建 GuiWindow 对象之后而不是在构造函数中填充数据可能是个好主意,因为那时您将能够可视化加载过程。

于 2012-08-22T11:55:15.797 回答