Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 Flash中的动态UI窗口绘图?_Actionscript 3_Flash_Lingo_Adobe Director - Fatal编程技术网

Actionscript 3 Flash中的动态UI窗口绘图?

Actionscript 3 Flash中的动态UI窗口绘图?,actionscript-3,flash,lingo,adobe-director,Actionscript 3,Flash,Lingo,Adobe Director,我不确定这个问题是否属于这里,但我会试试。因此,我打算将我的项目从导演冲击波播放器(如果你听说过的话)转移到Flash播放器,原因有很多,当我在思考如何更好地开始时,我有一个问题真的让我很好奇。切中要害 目前在Director中,用户界面中的每个游戏窗口(如小警报或包含大量元素的大窗口)都是根据需要绘制的,这意味着实际窗口的图形图像是根据配置(各种属性,如宽度、高度和所有元素及其属性)组合在一起的从大量的图形(例如,窗口背景由9个小片组成,如4个角,4个角之间的中间片用于动态宽度和高度,1个中心

我不确定这个问题是否属于这里,但我会试试。因此,我打算将我的项目从导演冲击波播放器(如果你听说过的话)转移到Flash播放器,原因有很多,当我在思考如何更好地开始时,我有一个问题真的让我很好奇。切中要害

目前在Director中,用户界面中的每个游戏窗口(如小警报或包含大量元素的大窗口)都是根据需要绘制的,这意味着实际窗口的图形图像是根据配置(各种属性,如宽度、高度和所有元素及其属性)组合在一起的从大量的图形(例如,窗口背景由9个小片组成,如4个角,4个角之间的中间片用于动态宽度和高度,1个中心片用于填充窗口),然后添加到舞台上。如果我们想更改颜色方案或改进元素中的某些内容,这种方法可以轻松编辑每个图形元素,而无需重新绘制实际窗口和其中的所有内容。它还保存资源,因为只有在请求时才绘制窗口


现在我要弄清楚,用Flash编写这样的代码是否值得,而不仅仅是创建所有窗口,将它们放入库中,并在需要时添加到后台。你怎么认为?值得编写这样的实现吗?

如果是2D,您可以检查:

如果是3D,您可以从这里开始:

我可以建议您也使用Unity3D,但这不属于flash


希望对您有所帮助

如果是2D,您可以检查以下内容:

如果是3D,您可以从这里开始:

我可以建议您也使用Unity3D,但这不属于flash

希望这对我有所帮助,这取决于1)您对Flash绘图API/图形类的适应程度,以及2)每个窗口/对话框需要多大的灵活性

如果把它们作为静态对象放在一起比较容易——如果它们不一定需要灵活地改变尺寸/样式(你能从一方面计算一下,自从多年前在Director中最初进行更改以来,它们需要改变多少次吗?),显然,这样做比花时间/精力动态地重新创建它们要容易得多,特别是如果您对Flash的绘图API不太熟悉的话

也就是说,使用Flash的绘图API可以动态完成很多工作,因此如果您有时间/兴趣,如果您想熟悉绘图API,我当然建议您深入研究并以“正确”的方式进行

我做这类事情的方法通常是这样的:

  • 创建一个扩展Sprite/MovieClip的单独类;类似于“Dialog.as”的东西
  • 创建public init()、show()和hide()方法以及私有build()方法
  • 初始化应用程序时只调用一次init(),并在内部保留一些全局参数(填充、颜色等)
  • show()接受一个文本(字符串)参数,甚至是一个Sprite/MovieClip参数——不管您想在这个对话框中显示什么。当被调用时(当您想要生成一个窗口时),它会使用这个参数——加上初始在init()期间传入的任何init参数——来绘制自身,然后取消隐藏自身(在.alpha属性之间,或者简单地设置.visible属性)
  • 要关闭对话框时,请确保调用hide()方法,该方法首先隐藏自身,然后清除创建的内容(删除侦听器等),以便下次调用它时可以将自身刷新
向该对象传递对Stage的引用(在原始init()调用中)也是有意义的,这样它就可以在Stage上相应地调整自身的中心位置和大小,并且还可以将child本身添加到显示列表的顶部,使其始终高于其他所有内容

我希望这能有所帮助。

在我看来,这取决于1)您对Flash绘图API/图形类的适应程度,以及2)每个窗口/对话框需要多大的灵活性

如果把它们作为静态对象放在一起比较容易——如果它们不一定需要灵活地改变尺寸/样式(你能从一方面计算一下,自从多年前在Director中最初进行更改以来,它们需要改变多少次吗?),显然,这样做比花时间/精力动态地重新创建它们要容易得多,特别是如果您对Flash的绘图API不太熟悉的话

也就是说,使用Flash的绘图API可以动态完成很多工作,因此如果您有时间/兴趣,如果您想熟悉绘图API,我当然建议您深入研究并以“正确”的方式进行

我做这类事情的方法通常是这样的:

  • 创建一个扩展Sprite/MovieClip的单独类;类似于“Dialog.as”的东西
  • 创建public init()、show()和hide()方法以及私有build()方法
  • 初始化应用程序时只调用一次init(),并在内部保留一些全局参数(填充、颜色等)
  • show()接受一个文本(字符串)参数,甚至是一个Sprite/MovieClip参数——不管您想在这个对话框中显示什么。当被调用时(当您想要生成一个窗口时),它会使用这个参数——加上初始在init()期间传入的任何init参数——来绘制自身,然后取消隐藏自身(在.alpha属性之间,或者简单地设置.visible属性)
  • 要关闭对话框时,请确保调用hide()方法,该方法首先隐藏自身,然后清除创建的内容(删除侦听器等),以便下次调用它时可以将自身刷新
向该对象传递对Stage的引用(在原始init()调用中)也是有意义的,这样它就可以在Stage上相应地调整自身的中心和大小,并添加