1

我目前正在尝试访问另一个文件上的函数。(更准确地说,是另一个层)。

两个图层都在一个场景中。

第三层正在尝试从第一层获取功能......

以下是我的做法:

这是我在 scene.h 中的场景

 #import "firstLayer.h"
 #import "secondLayer.h"
 #import "thirdLayer.h"

@interface myScene : CCScene
{
// custom instance vars here...
}
@end

这是我在 scene.m 中投射场景的方式

-(id)init {
self = [super init];
if(self != nil){

firstLayer *firstLayerz = [firstLayer node];
    [firstLayerz setTag:111];
    [self addChild:firstLayerz z:0];


    secondLayer *secondLayerz = [secondLayer node];
    [secondLayer setTag:112];
    [self addChild:secondLayer z:2];


    thirdLayer *thirdLayerz = [thirdLayer node];
    [thirdLayerz setTag:113];
    [self addChild:thirdLayerz z:4];

这是我在thirdLayer.m 中转换函数的方法

#import "scene.h"

@implementation thirdLayer.m

-(id)init {
self = [super init];
if(self != nil){

     firstLayer* firstLayerz = (firstLayer*)[self.parent getChildByTag:111];

     [firstLayerz functionNeeded];

}

这是 firstLayer.m 中需要的函数(就在 init(

    -(void)functionNeeded {
NSLog(@"inside fnnction needed");
}

当然日志没有显示...

我在 firstLayer.h 中进行了正确的演员阵容

 @interface firstLayer : CCLayer {

 }


-(void)functionNeeded;


@end
4

1 回答 1

1

在你的 firstLayer 的 init 方法中写

self.tag = 111;

现在在您要调用第一层方法的 ThirdLayer 中 write :

CCScene *current = [[CCDirector sharedDirector] runningScene];
if (current) {
   id layer = [current getChildByTag:111];
   if (layer) {
      [layer functionNeeded];
   }
}
于 2013-09-11T12:11:43.233 回答