2011-05-14 81 views
1

Player.m绘制在不同的文件中的两个对象

// 
// PlayerTestAppDelegate.m 
// PlayerTest 
// 
// Created by Someguy on 5/13/11. 
// Copyright 2011 Enginering. All rights reserved. 
// 

#import "Player.h" 

@implementation Player 
@synthesize window; 

//[NSThread sleepForTimeInterval:.1]; 

// On the program finished loading, do the following.. 
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {plyr_size = 10; xcord = 200; ycord = 215; [self DrawPlayer];} 


- (void)Clearscreen{NSPoint origin = {0,0}; NSRect rect; rect.origin = origin; rect.size.width=1000; rect.size.height=1000; NSBezierPath * path; path = [NSBezierPath bezierPathWithRect:rect]; [path setLineWidth:4]; [[NSColor whiteColor] set]; [path fill]; [[NSColor whiteColor] set]; [path stroke];} 

- (void)DrawPlayer{[self Clearscreen]; NSBezierPath * path = [NSBezierPath bezierPath]; [path setLineWidth:4]; NSPoint center = {ycord,xcord}; [path moveToPoint: center]; [path appendBezierPathWithArcWithCenter: center radius: plyr_size startAngle: 0 endAngle: 360]; [[NSColor grayColor] set]; [path fill]; [[NSColor grayColor] set]; [path stroke];} 



//Declare these actions 

- (IBAction)PlayerMoveForward:(id)sender {[self PlayerMoveForward];} 
- (IBAction)PlayerMoveBackwards:(id)sender {[self PlayerMoveBackwards];} 
- (IBAction)PlayerMoveLeft:(id)sender {[self PlayerMoveLeft];} 
- (IBAction)PlayerMoveRight:(id)sender {[self PlayerMoveRight];} 

// Declare the Methods used for movement 

- (void)PlayerMoveForward {xcord=xcord+10; [self DrawPlayer]; [self GetPlayerPostion];} 

- (void)PlayerMoveBackwards {xcord=xcord-10; [self DrawPlayer]; [self GetPlayerPostion];} 

- (void)PlayerMoveLeft {ycord=ycord-10; [self DrawPlayer]; [self GetPlayerPostion];} 

- (void)PlayerMoveRight {ycord=ycord+10; [self DrawPlayer]; [self GetPlayerPostion];} 

- (void)GetPlayerPostion {NSLog(@"Player cordinates (%i, %i)",xcord, ycord);} 

@end 

EntityZombie.m

// 
// EntityZombie.m 
// PlayerTest 
// 
// Created by Someguy on 5/13/11. 
// Copyright 2011 Enginering. All rights reserved. 
// 

#import "EntityZombie.h" 
#import "Player.h" 

@implementation EntityZombie : Player 

//- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {[self FollowPlayer];} 
- (void)awakeFromNib{[self FollowPlayer];} 

- (void)DrawZombie {if ([self CanSpawnZombie] == TRUE){NSBezierPath * path = [NSBezierPath bezierPath]; [path setLineWidth:4]; NSPoint center = {215,200}; [path moveToPoint: center]; [path appendBezierPathWithArcWithCenter: center radius: 18 startAngle: 0 endAngle: 360]; [[NSColor greenColor] set]; [path fill]; [[NSColor greenColor] set]; [path stroke];}} 
- (void)FollowPlayer { 
    NSLog(@"Zombie is following player.."); 
    //zombie_xcord == xcord-1; 
    //zombie_ycord == ycord-1; 
    [self DrawZombie]; 
} 

- (BOOL)CanSpawnZombie{return TRUE;} 

@end 

僵尸不会渲染和我的

2011-05-13 20:59:22.677 PlayerTest[45207:a0f] Zombie is following player.. 
Fri May 13 20:59:22 Someguy-MacBook-Pro.local PlayerTest[45207] <Error>: CGContextSetFillColorWithColor: invalid context 0x0 

回答

1

日志有没有当前绘制上下文。问题出在你调用绘图方法的地方。他们需要从-(void) drawRect方法中调用,或者,如果您愿意,可以绘制图像。无论哪种方式,都必须有当前的绘制环境。

相关问题