我想知道如何以最佳方式实现场景之间的过渡。
我的应用在ccscene1
中有class1
,ccscene2
有class2
。
当我从scene1转换到scene2时,在scene1 init方法上有很多已分配的实例,我不想每次在场景中释放/分配。 我想知道如何实现scene1以便所有分配的实例(其中一些是服务器tcp连接)从2开始时不再分配,但仅在第一次启动时,并且在所有场景转换期间仍然保持有效。
一个解决方案: 设置一个全局标志,并从第一次启动时委托将其设置为1,而不是检查这是否是第一次在scene1的init方法上启动,并分配对象。
离开scene1后,这个对象在我回来时仍然有效? (假设我没有发布它们)?
主要目标是不将每个转换连接到服务器,并保持scene1的委托实例有效(对于我正在使用solution1的情况)
-(id) init
{
if( (self=[super init]) )
{
socketInstance=[[SocketConnector alloc]init]; //only once !
socketInstance.delegate=self;
//later on i have transition :
[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:0.7f scene:[AdressBookScene scene]]];
我正在寻求“专业”的方式来做到这一点。
答案 0 :(得分:1)
您可以使用pushScene
来运行scene2。这将完全保留scene1并将其保留在内存中。然后,您可以继续replaceScene
场景2与其他场景,并最终呼叫popScene
返回场景1。