在场景之间切换会冻结触摸

Posted

技术标签:

【中文标题】在场景之间切换会冻结触摸【英文标题】:switching between scenes freezes touches 【发布时间】:2013-06-24 18:08:12 【问题描述】:

我有这两个场景,一个菜单场景和一个主游戏场景。 主游戏场景有两个连接到它的单层层,这是我所有游戏内容的地方。

我使用 replaceScene 方法从游戏场景切换回菜单场景,但是当我切换回游戏场景时,控件或触摸被冻结。

这里是主要的游戏场景代码:

#import "BJPlayfieldScene.h"


@implementation BJPlayfieldScene


+(id)scene 
return( [ [ self alloc ] init ] );


-(id) init

if( (self=[super init])) 

    //Background Layer
    [self addChild:[BackgroundLayer sharedBackground] z:0];

    //playfiled layer

    [self addChild:[BJPlayfieldLayer sharedfieldlayer] z:5];


return self;


@end

然后是切换回第四个的代码:

[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0     scene:[IntroLayer scene]]];

[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0    scene:
                                           [BJPlayfieldScene  scene ] ]];

有什么想法吗?

非常感谢

【问题讨论】:

帧速率稳定显示在 30.0 左右,所以我怀疑离开场景时触摸会被禁用,因为 self.touchEnabled = YES;在我的 init 方法中,它永远不会被再次调用,因为它是一个单例。我尝试从外部重新启用它,但没有运气。或者问题可能出在其他地方。 【参考方案1】:

如果您实现了 onEnter 或类似的 on* 方法,您必须调用超级实现。不这样做会导致“输入丢失”。

【讨论】:

谢谢,我对此有点陌生,我在哪里可以找到 onEnter 方法以及如何实现它。我在某处看到过 onEnter,但不记得它是如何工作的。顺便说一句,我有你的书 我添加了一个 onEnter 方法并在其中重新启用了触摸,并且还调用了超级实现,但没有运气 好的,我将按钮和菜单创建代码从 init 移到了 OnEnter,如果可行!!!!太棒了,谢谢

以上是关于在场景之间切换会冻结触摸的主要内容,如果未能解决你的问题,请参考以下文章

Winform Application UI在其他打开的应用程序之间切换时冻结

iAd 冻结游戏画面

切换活动时冻结动画

-Roblox- 在播放器和部件之间切换时出现某种相机故障

PWA 应用程序在 iOS 13.4 上的应用程序切换期间冻结

场景刷新冻结