我在某种程度上是一个UI爱好者--我游戏中的每一个“屏幕”都应该在它出现或消失时转换进/出。因为我的游戏在资源方面很简单,我想我应该让每个“屏幕”都有一个CCLayer,并为转换定义一个函数,把所有东西都留在内存中。结果比我预想的要复杂得多。
我想我现在有两个主要的问题:
1)每个“屏幕”都是一个CCLayer。这看起来很好,但我似乎不能停止接收触摸事件,即使它们是不活动的。子精灵似乎不尊重isTouchEnabled属性,所以我一直在点击看不见的按钮。
2)我写了一个自定义按钮类,它基本上是一个sprite,带有几个独立的状态纹理。它使用CCTargetedTouchDelegate协议。我认为这是上述问题的一大部分。
我对CCMenu的事情不是很清楚。有没有教程或文档可以更好地解释它的设计目的以及如何使用它?cocos2d的文档根本没有讨论每个类做什么,这使得正确使用这个库变得非常非常困难。另外,什么时候我应该使用场景而不是层?我可以编写自定义转换吗?
发布于 2012-08-18 05:45:03
在菜单中使用CCScenes更加方便。非活动CCScene的所有子对象都不会收到触摸事件,因此您不必管理该行为。CCScenes也有内置的过渡,比如交叉淡入淡出,但如果你像我一样,你可能只想运行一个动作来使场景过渡出来,然后调用CCDirector:replaceScene。
发布于 2012-08-11 23:08:52
我发现,如果你在一个场景中有多个层用于菜单,比如主菜单(用一个层来加载游戏、新游戏等比整个场景更简单),如果你添加所有的按钮作为该层的子级;然后为了阻止它们接收触摸,只需在不使用时将该层移出屏幕即可。这里有一个例子。
[loadLayer setPosition:CGPointMake(-1000,-1000)];
[settingsLayer setPosition:CGPointMake(-1000,-1000)];
[menuLayer setPosition:CGPointMake(0,0)];每次你选择一个按钮,这会让你说加载游戏层只需要为正确的层反转它。
[loadLayer setPosition:CGPointMake(0,0)];
[settingsLayer setPosition:CGPointMake(-1000,-1000)];
[menuLayer setPosition:CGPointMake(-1000,-1000)];https://stackoverflow.com/questions/11912015
复制相似问题