使用Flex SDK开发简单游戏时,使用 Canvas 对象与 UIComponent 对象作为绘图表面会产生什么后果?是否存在性能问题?方法通常是一样的吗?搜索一下,似乎我发现的大多数示例代码都使用UIComponent。这只是习惯,还是有原因?
我已经知道一个奇怪的区别 - 我开发了一个简单的Pong游戏:
public class MyGameCanvas extends UIComponent
然后决定用Canvas替换UIComponent。这导致线路失败:
addChild(paddle);
在花了太多时间搜索之后,我终于发现Canvas对象需要:
rawChildren.addChild(paddle);
由于对象的继承链,Sprites高于Canvas。
但这似乎不是一个选择另一个班级的理由。 有什么具体原因吗?感谢。
更新: 好吧,我猜Canvas已经出局了,UIComponent也在。我尝试Canvas对象的唯一原因就是这个名字。我的意思是,它是一个画布 - 不是你应该画画的地方吗? :)
所以突然出现的第二个问题是关于使用Flex SDK(我不知道这应该是一个全新的问题,还是可以的。)
但是,我必须确认一些内容,对Flex不熟悉以及各种术语。我假设人们的意思是我不应该将 MXML 用于游戏,当他们说 Flex SDK 时。因为我认为Flex SDK提供了生成.swf文件的编译器。否则,我在哪里/怎么编译AS3?
假设是这种情况,那么我的问题是关于将MXML和AS3用于(简单)游戏的适用性。基于我对两者的看法,似乎它们的用途是MXML用于界面元素,而AS3用于其他所有内容。 MXML的开销是不是很糟糕?
John C>
答案 0 :(得分:3)
我认为使用flex sdk开发游戏毫无意义。 Flex SDK的设计考虑了应用程序开发,因此您不应该使用它来制作游戏。
您是否有特定理由使用它而不是简单的AS3项目?
答案 1 :(得分:2)
Canvas有一堆额外的布局代码和滚动条。它肯定比单独的UIComponent重。此外,重要的是要知道Canvas要求所有子节点都是UIComponent的子类。除非你为Flex容器(Canvas上的滚动条和Panel中的边框/背景)构建某种“chrome”,否则使用rawChildren添加非UIComponent是一种黑客攻击。
但是,我同意PeZ的意见。 Flex框架可能不是游戏的正确选择。除非您拥有包含DataGrids,Trees,Charts等内容的游戏UI,否则无需Flex即可获得更小,更优化的SWF。答案 2 :(得分:0)
如果您不需要画布中的其他内容,例如滚动条,那显然是偏好UIComponent的理由。画布只是一个较重的物体。