Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocos2d iphone 如何在Cocos2d中添加不受场景变换影响的全局CCLayer?_Cocos2d Iphone - Fatal编程技术网

Cocos2d iphone 如何在Cocos2d中添加不受场景变换影响的全局CCLayer?

Cocos2d iphone 如何在Cocos2d中添加不受场景变换影响的全局CCLayer?,cocos2d-iphone,Cocos2d Iphone,是否可以在Cocos2d中添加不受场景变换影响的全局层 正如我所看到的,它应该在所有场景层次之上 Cocos2d论坛上有一个古老而简短的讨论,但没有答案: UPD。”“我所说的场景变换”是指“动画场景变换”。我的直觉说不,我的大脑说可能 文档中说,“将CCScene用作所有节点的父节点是一种很好的做法。” 我现在无法测试这一点,但是查看CCNode的继承关系图,它看起来像CCNode和CCScene的逻辑只因锚点不同而不同。因此,您可以创建一个CCLayer用作根层,并向其中添加两个子层-一个

是否可以在Cocos2d中添加不受场景变换影响的全局层

正如我所看到的,它应该在所有场景层次之上

Cocos2d论坛上有一个古老而简短的讨论,但没有答案:


UPD。”“我所说的场景变换”是指“动画场景变换”。

我的直觉说,我的大脑说可能

文档中说,“将CCScene用作所有节点的父节点是一种很好的做法。”

我现在无法测试这一点,但是查看
CCNode
的继承关系图,它看起来像
CCNode
CCScene
的逻辑只因锚点不同而不同。因此,您可以创建一个
CCLayer
用作根层,并向其中添加两个子层-一个根
CCScene
,一个用于GUI的
CCLayer
(Z顺序更高)

但是,场景转换可能仍然很棘手,因为您通常称之为
CCDirector replaceSecene
,它适用于您提供的根场景。如果给它根
CCLayer
CCScene
子对象,它可能不会绘制
CCLayer
及其GUI子对象。如果给它根
CCLayer
,则情况与以前相同


我还是会尝试一下。

我的肠子说,我的大脑说可能

文档中说,“将CCScene用作所有节点的父节点是一种很好的做法。”

我现在无法测试这一点,但是查看
CCNode
的继承关系图,它看起来像
CCNode
CCScene
的逻辑只因锚点不同而不同。因此,您可以创建一个
CCLayer
用作根层,并向其中添加两个子层-一个根
CCScene
,一个用于GUI的
CCLayer
(Z顺序更高)

但是,场景转换可能仍然很棘手,因为您通常称之为
CCDirector replaceSecene
,它适用于您提供的根场景。如果给它根
CCLayer
CCScene
子对象,它可能不会绘制
CCLayer
及其GUI子对象。如果给它根
CCLayer
,则情况与以前相同


我仍然会尝试一下。

您可以创建一个CCLayer子类并将其转换为单例。将其添加到场景中,与其他任何子节点一样

无论何时从一个场景过渡到另一个场景,都可以从旧场景中删除该层,并将其作为子场景添加到新场景中。仅当不使用场景过渡动画时,此选项才有效


另一种方法是不使用CCDirector ReplaceSecene方法,而是将应用程序设计为作为一个永不更改的单一场景运行。要“伪造”场景的更改,您将使用两个层,一个全局层和另一个包含当前场景节点的层。如果要转换,可以使用C动作设置层的动画,例如,滑出屏幕,同时滑入具有不同节点层次的新层。您真正失去的是CCSceneTransition类为场景更改设置动画的便利性。

您可以创建一个CCLayer子类并将其转换为单例。将其添加到场景中,与其他任何子节点一样

无论何时从一个场景过渡到另一个场景,都可以从旧场景中删除该层,并将其作为子场景添加到新场景中。仅当不使用场景过渡动画时,此选项才有效


另一种方法是不使用CCDirector ReplaceSecene方法,而是将应用程序设计为作为一个永不更改的单一场景运行。要“伪造”场景的更改,您将使用两个层,一个全局层和另一个包含当前场景节点的层。如果要转换,可以使用C动作设置层的动画,例如,滑出屏幕,同时滑入具有不同节点层次的新层。您真正失去的是CCSCenetTransition类为场景更改设置动画的便利性。

您可以使用CCDirector的notificationNode属性来放置一个CCNode(即CCLayer、CCLabel等),即使在过渡期间,它仍将保持在场景上方。大概是这样的:

CCLayer *layer = [CCLayer node];
CCLabelTTF *label = [CCLabelTTF labelWithString:@"Test" fontName:@"Marker Felt" fontSize:32];
[layer addChild:label];
[[CCDirector sharedDirector] setNotificationNode:layer]; // Layer should be placed here
[layer onEnter]; // Schedule for updates (ie. so that CCActions will work)

它用于通知目的(广告等),因此我不建议尝试从该节点执行任何过于花哨的操作。

您可以使用CCDirector的notificationNode属性放置一个CCNode(即CCLayer、CCLabel等),该节点即使在过渡期间也会保持在场景上方。大概是这样的:

CCLayer *layer = [CCLayer node];
CCLabelTTF *label = [CCLabelTTF labelWithString:@"Test" fontName:@"Marker Felt" fontSize:32];
[layer addChild:label];
[[CCDirector sharedDirector] setNotificationNode:layer]; // Layer should be placed here
[layer onEnter]; // Schedule for updates (ie. so that CCActions will work)

它用于通知目的(广告等),因此我不建议尝试从该节点执行任何过于花哨的操作。

谢谢!我也这么认为,但在尝试修补CCDirector类以满足我的需要之前,我需要指出:)谢谢!我也这么认为,但在尝试修补CCDirector类以满足我的需要之前,我需要指出:)