目标 c - 在单独的文件中绘制两个对象



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
//  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

当前没有绘制上下文。问题出在您调用绘制方法的位置。需要从-(void) drawRect方法调用它们,或者,如果您愿意,可以绘制到图像中。无论哪种方式,都必须有一个当前的绘制上下文。

相关内容

  • 没有找到相关文章

最新更新