“图形用户界面”窗口的代码

时间:2012-08-22 05:47:25

标签: actionscript-3 user-interface

有人会如何编写'窗口'?我开始制作一个GUI,我想学习如何编写一个。一个可以换肤的,一个实际上在运行时循环并创建自己的东西。我知道这可能有点模糊,所以我会添加细节。

实际上“创造”自己的一个。我看过的大多数GUI教程都取决于刚刚添加到屏幕上的“图像”。我希望能够在我的窗户中使用皮肤。我的“皮肤”只是“边界”的集合。然后,当我插入window.create(50,50),其中50,50是我的身高,宽度时,它会在皮肤之后创建该窗口。

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

请帮助。我没有包含我所用的语言,因为我相信我只需要知道如何创建一种语言。无论如何,我正在使用Actionscript 3.一个教程会很好,甚至是一个具有这种功能的单一类,我只会研究代码。或者,如果你知道一个,也许是一本关于GUI和编程的全书:D

2 个答案:

答案 0 :(得分:1)

Pure As3.0 GUI编码非常麻烦。我尝试使用谷歌搜索,但不是很好。无论如何,对于我的情况,我使用SWC生成,以及类映射和自定义。但我不确定最好的方法。换句话说,我使用bit101库。这让我想要 Window Charts Componets 很容易实现高抽象。见下图。

enter image description here

答案 1 :(得分:0)

这可能非常困难和复杂,或者非常简单,这取决于您的解决方案应该具有多大的灵活性。首先需要设计一个程序结构并解决问题。

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

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

那你需要什么?

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

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对象可能是个好主意,而不是在构造函数中,因为您可以直观地看到加载过程。