gpt4 book ai didi

iphone - CALayers 基于一层的多层

转载 作者:行者123 更新时间:2023-12-03 20:53:49 26 4
gpt4 key购买 nike

我目前正在尝试使用基于 CALayers 的核心动画制作 2D 游戏。我已经弄清楚了用户 Sprite 层,但现在它归结为游戏对象。

物体(用户必须避开)将从屏幕顶部掉落,如果它们从未与用户接触就会消失。但是,因为所有这些障碍物都是相同的,所以我决定使用单独的 .h 和 .m 来定义对象,并使用几行代码使每个障碍物“进入游戏”。

底线,我有两个问题:1. 我如何将每个障碍物作为 CALayer“导入”到主视图中?即使障碍物只是一张图像,为障碍物设置单独的文件是最好的处理方式吗?

最佳答案

如果您已经弄清楚了用户 Sprite ,您可能遇到过 addSublayer:,它在另一个图层上调用以将其添加到图层树中。从根本上讲,要添加障碍物,您需要使用 -[CALayer 层] 实例化一个新层,对其进行配置,然后 [rootLayer addSublayer:obstacle];

现在,关于单独文件的问题:创建一个具有自己的 header 和实现的新类是一个好主意。但只需创建一个类(即一对 .h/.m)来定义 Obstacle 如何工作,并通过发出 -[[Obstacle alloc] init] 调用来创建它的许多实例(确保在它们不可用时释放它们)更长可见!)

“障碍”如何导入并可见?您很可能会在 Obstacle 的 @interface{} 中放置一个 CALayer 类型的变量。 GameBoard(或非常简单的原型(prototype)/应用程序的 ViewController)可以有一个方法 -addObstacle:它接受一个 Obstacle,询问它的层并将其添加到 rootLayer。

为了彻底,我可能错过了你问题的要点,这个问题更像是“我应该有一个障碍类,还是只是一个充满 CALayers 的障碍阵列?”鉴于游戏的描述,您当然可以这样做。但是,一旦您想要开始保留有关单个障碍物实例的任何信息,您最好让对象本身回答有关该信息的问题。我已经完成了大量只有层数组的原型(prototype)/测试应用程序,因为尽管 CALayer 牢牢地位于 MVC 的 View 范围内,但它通常包含我需要的所有模型信息:x、y、边界、颜色、内容等等。我把任何东西变成了一个真正的应用程序,但为了可维护性,必须重新编写大部分内容。

关于iphone - CALayers 基于一层的多层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6976145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com