有人会如何编写'窗口'?我开始制作一个GUI,我想学习如何编写一个。一个可以换肤的,一个实际上在运行时循环并创建自己的东西。我知道这可能有点模糊,所以我会添加细节。
实际上“创造”自己的一个。我看过的大多数GUI教程都取决于刚刚添加到屏幕上的“图像”。我希望能够在我的窗户中使用皮肤。我的“皮肤”只是“边界”的集合。然后,当我插入window.create(50,50)
,其中50,50是我的身高,宽度时,它会在皮肤之后创建该窗口。
我理解它可能就像语言绘制一个矩形一样,它只是遵循一套不同的规则(也许?)。但是,对于我所有的Google-fu技能,我找不到教我这个教程的教程。
请帮助。我没有包含我所用的语言,因为我相信我只需要知道如何创建一种语言。无论如何,我正在使用Actionscript 3.一个教程会很好,甚至是一个具有这种功能的单一类,我只会研究代码。或者,如果你知道一个,也许是一本关于GUI和编程的全书:D
答案 0 :(得分:1)
Pure As3.0 GUI编码非常麻烦。我尝试使用谷歌搜索,但不是很好。无论如何,对于我的情况,我使用SWC生成,以及类映射和自定义。但我不确定最好的方法。换句话说,我使用bit101库。这让我想要 Window , Charts , Componets 很容易实现高抽象。见下图。
答案 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对象可能是个好主意,而不是在构造函数中,因为您可以直观地看到加载过程。