2013-09-10 36 views
1

我当前正在尝试访问另一个文件上的函数(更精确的说是另一个层)。不存在功能

两个图层都在场景中。

第三层是试图从第一层的功能...

这里的IM如何这样做:

这是我在现场scene.h

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

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

以下是我投我在场景中的场景

-(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]; 

} 

这里的functionNeeded在firstLayer.m(右下方的init(

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

过程中,日志不显示的...

我做firstLayer.h

适当的投
@interface firstLayer : CCLayer { 

} 


-(void)functionNeeded; 


@end 

谢谢你的时间和帮助!

+3

哪一部分是C++? –

+1

是首先Layerz零?如果是这样,请检查self.parent是包含第一层而不是其他节点的节点(也许是自己) – LearnCocos2D

+0

我想你会从self.parent得到错误类型的对象 –

回答

1

在你firstLayer的init方法写

self.tag = 111; 

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

CCScene *current = [[CCDirector sharedDirector] runningScene]; 
if (current) { 
    id layer = [current getChildByTag:111]; 
    if (layer) { 
     [layer functionNeeded]; 
    } 
} 
+0

你会推荐一次作为一个globalClass变量,或者每次我调用它时都这么做吗?(如果我多次调用它,你会推荐它吗?)我现在就去尝试一下。 – user2766367

+0

我试过你告诉我的,如果没有发生,我在每个内部做了一个Log。我做了一个记录当前和返回空值。 我在firstLayer初始化方法中添加了self.tag .....如果它有帮助,我的scene.h没有任何内部接口或外部哈哈 – user2766367

+0

请问您可以使用您的类的层次更新这些问题吗?只有.h文件,如果可能的话.m文件也是如此。 – Renaissance