2013-11-04 49 views
1

我正在使用C4應用程序,並創建了C4Shape的子類。我無法從子類中訪問畫布,但我不確定如何檢查它,或者如何從另一個對象訪問它。從子類訪問畫布?

這是我的代碼至今:

#import "Platform.h" 

@implementation Platform { 
    CGPoint o; 
    C4Timer *timer; 
    int speed; 
} 

-(void) setup { 
    speed = 10; 
    [self rect:CGRectMake(0, 0, 100, 100)]; 

    timer = [C4Timer automaticTimerWithInterval:1.0f/30 
             target:self 
             method:@"push" 
             repeats:YES]; 
    o = self.center; 
} 

+(id) platformWithRange:(CGRect)s { 
    Platform * bb = [Platform new]; 
    bb.range = s; 
    return bb; 
} 

-(void) push { 
    // check boundaries 
    o.x-= speed; 
    if(0 >= o.x - 50) { 
     o.x = range.size.width; 
    } 
} 
@end 

回答

1

看一看這個答案的第二部分:https://stackoverflow.com/a/15885302/1218605

您可以在子類中創建一個屬性,您將設置來自主工作區的畫布。

@implemenation C4WorkSpace 

-(void)setup { 
    CustomSubclass *obj = [CustomSubclass new]; 
    obj.canvas = self.canvas; 
} 

@end 
+0

謝謝!這真的很酷,但我想知道在課堂上是否有這樣做,因爲這樣,我不需要移動所有的形狀,並在主畫布中包含所有的動作? – tailedmouse

+0

如果你正確設計你的課程,他們可以是獨立的。如果你遵循上面的技巧和鏈接的答案,你需要爲每個類的實例進行初始化,然後將其傳遞給畫布的引用。一旦實例有了引用,它就可以用它來確定它與畫布的相對位置。 –

+0

酷!謝謝!!! – tailedmouse