嘿再次,
基本上,我有兩個類: HudLayer和ConstructLayer。奇怪的行爲 - 訪問外部實例方法
我想從ConstructLayer訪問HudLayer中的一個方法,以關閉/打開HudLayer內部分配的CCSprites的可見性屬性。
HudLayer接口和實現:
HudLayer : CCLayer
@interface{
CCSprite *leftArrow;
CCSprite *rightArrow;
}
-(void)switcher:(BOOL)isVisible;
@end
@implementation
-(id)init{
//Create the Hud Sprites and add them at an arbitrary location
leftArrow = [[[CCSprite alloc]init]retain];
leftArrow = [CCSprite imageWithFile:@"file.png"];
rightArrow = [[[CCSprite alloc]init]retain];
rightArrow = [CCSprite imageWithFile:@"file.png"];
leftArrow.visible = NO;
rightArrow.visible = NO;
[self addChild: leftArrow];
[self addChild: rightArrow];
}
-(void)switcher:(BOOL)isVisible{
NSLog (@"Accessed the visibility switcher");
if (isVisible == NO){
leftArrow.visible = NO;
rightArrow.visible = NO;
}
if (isVisible == YES){
leftArrow.visible = YES;
rightArrow.visible = YES;
}
@end
構建層實現:
#import "HudLayer"
@implementation ConstructLayer
-(void)someFunction{
//Attempt to change the visibility of leftArrow and rightArrow
HudLayer *hud = [[HudLayer alloc]init];
[hud switcher: NO];
[hud release];
}
這應該不應該呢?但它不!
我訪問[hud switcher:]方法,但由於某種原因,它不會正確設置屬性CCSprite.visibility。
我把一個NSLog語句打印在我的控制檯中,證明它正在訪問它。它真的很奇怪,我不知道它是怎麼回事。 我連這個函數裏面的變量,並用印的NSLog他們和它的工作...
我只加了額外的撥款,以確保被釋放的對象wasnt。 我試驗過,並把這個:leftArrow = [[CCSprite spriteWithFile ...] retain]; 這不工作,也沒有任何其他組合,我不知道爲什麼... – Ospho 2011-04-21 01:40:24
你沒有添加額外的分配。你創建了一個懸掛對象,你沒有指針。嘗試在帖子的編輯部分的代碼。 – Altealice 2011-04-21 03:31:55
感謝您的回覆,我確實嘗試過,並且它不起作用:( – Ospho 2011-04-22 03:12:35