2011-06-29 65 views
1

不知道这个问题是否属于这里,但我会尝试。所以我即将把我的项目从Director |中移出Shockwave Player(如果你曾经听说过这些)Flash Player出于各种原因,当我想如何更好地开始时,我得到了一个真正令我想知道的问题。重点。在Flash中动态UI窗口绘图?

当前位于用户界面中的每个游戏窗口(如小警报或其中包含很多元素的大窗口)根据需要绘制 - 意味着实际窗口的图形图像由配置(所有(例如窗口背景由9个小片段组成,例如4个角落,4个位于角落之间的用于动态宽度和高度的中间片段以及1个用于填充的中央片段窗口),然后添加到舞台。这种方法可以轻松编辑每个图形元素,而无需重新绘制实际窗口及其中的所有内容,只要我们想要更改颜色方案或改进元素中的某些内容即可。它还可以节省资源,因为只有在请求时才会绘制窗口。

现在我得弄清楚它是否值得在Flash中编写这样的代码也为相反刚刚创建的所有窗口,并把他们在图书馆和添加在需要的时候上演。你怎么看?是否值得编写这样的实现?

+0

应用程序(游戏,后台,网页)的使命是什么? –

+0

@ Xavi,这是MMO游戏。 – Rihards

回答

1

IMO,它取决于1)你对Flash的绘图API /图形类有多舒适,以及2)每个窗口/对话需要多么灵活。

如果将它们作为静态对象放在一起更容易 - 并且它们不一定需要灵活地更改尺寸/样式(可以一方面指望自己需要更改多少次它最初是在多年前在Director中完成的?),与通过动态重新创建它们的时间/精力相比,显然要容易得多,尤其是如果你对Flash的绘图API不太满意。那么,如果你有时间/兴趣,我肯定会建议你挖掘并以“正确”的方式来做,如果你想熟悉图纸API。

我做这种事,通常的方法是这样的:

  • 创建扩展雪碧/影片剪辑一个单独的类;像'Dialog.as'。
  • 创建公共的init(),显示()和隐藏()方法,和一个私人build()方法。
  • 初始化应用程序时init()只会被调用一次,并且需要一些全局参数来保持内部(填充,颜色等)。
  • show()接受文本(字符串)或甚至是Sprite/MovieClip的参数 - 无论您想在此对话框中显示哪个参数。当被调用时(当你想产生一个窗口时),它使用这个 - 加上init()期间最初传入的任何init参数来绘制自己,然后取消隐藏自身(补间.alpha属性,或者简单地设置。可见财产)。
  • 当你想关闭对话框时,确保调用hide()方法,它首先隐藏自己,然后清理创建的任何东西(删除侦听器等),以便下次调用它时可以吸引新鲜。

这也可能是有意义的传递到该对象到舞台的引用(在原来的init()调用),以便它可以相应地在舞台中心和大小本身,也的AddChild本身的显示列表的顶部,以便它始终高于一切。

我希望这会有所帮助。

+0

哦,非常感谢这个答案 - 我认为这个答案是没有答案的。我会考虑晚上应该选择哪条路线。再次感谢您提供的优点! :) – Rihards

+0

太好了,如果你想要任何具体的例子,请随时问,我会尽力为你开始一个快速的小班,开始合作。 – TimKlimowicz