CGContextSetFillColorWithColor(g, [UIColor greyColor].CGColor);
Ich versuche O'Reilly Buch, iPhone Game Development, aber auf Seite 73 Kapitel 3 Ich erhalte diesen Fehler zu folgen:Zugriff auf die CGColor-Eigenschaft von UIColor in CGContextSetFillColorWithColor?
error: request for member 'CGColor' in something not a structure or union
Nach dem Buch des errata page dies ist ein unbestätigter errata in der Buch. Mit welchem Funktionscode kann diese Zeile ersetzt werden?
Weitere Details
Das Beispielprojekt kann here heruntergeladen werden.
mir den Fehler bei der Render-Funktion wurde begegnet durch die Anweisungen des Buchs folgende von Seite 72 bis Seite 73, um die gsMain Klasse (das unterscheidet mich von dem Beispielprojekt pg77) an der Render-Funktion gsMain.m
zu bauen der Code-snippet, dass das Buch gsMain Klasse zu bauen instruiert ist wie folgt:
//gsMain.h
@interface gsTest : GameState { }
@end
//gsMain.m
@implementation gsMain
-(gsMain*) initWithFrame:(CGRect)frame andManager:(GameStateManager*)pManager
{
if (self = [super initWithFrame:frame andManager:pManager]) {
NSLog(@"gsTest init");
}
return self;
}
-(void) Render
{
CGContextRef g = UIGraphicsGetCurrentContext();
//fill background with gray
CGContextSetFillColorWithColor(g, [UIColor greyColor].CGColor); //Error Occurs here
CGContextFillRect(g, CGRectMake(0, 0, self.frame.size.width,
self.frame.size.height));
//draw text in black
CGContextSetFillColorWithColor(g, [UIColor blackColor].CGColor);
[@"O'Reilly Rules!" drawAtPoint:CGPointMake(10.0,20.0)
withFont:[UIFont systemFontOfSize:[UIFont systemFontSize]]];
}
-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
{
UITouch* touch = [touches anyObject];
NSUInteger numTaps = [touch tapCount];
//todo: implement touch event code here
}
@end
die Chapter3_Example_p77 sollte ab Seite des Ergebnis der Übungen zeigen, 71 bis 77, aber es ist sehr verschieden von den Anweisungen gegeben in 71 bis 77. Der folgende Code ist die vollständige, kompilierbare Klasse, die von oben heruntergeladen wurde Verknüpfung.
//gsMain.h
#import <Foundation/Foundation.h>
#import "GameState.h"
@interface gsMain : GameState {
}
@end
// gsMain.m
// Example
// Created by Joe Hogue and Paul Zirkle
#import "gsMain.h"
#import "gsTest.h"
#import "Test_FrameworkAppDelegate.h"
@implementation gsMain
-(gsMain*) initWithFrame:(CGRect)frame andManager:(GameStateManager*)pManager {
if (self = [super initWithFrame:frame andManager:pManager]) {
//do initializations here.
}
return self;
}
- (void) Render {
[self setNeedsDisplay]; //this sets up a deferred call to drawRect.
}
- (void)drawRect:(CGRect)rect {
CGContextRef g = UIGraphicsGetCurrentContext();
//fill background with gray
CGContextSetFillColorWithColor(g, [UIColor grayColor].CGColor);
CGContextFillRect(g, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height));
//draw text in black.
CGContextSetFillColorWithColor(g, [UIColor blackColor].CGColor);
[@"O'Reilly Rules!" drawAtPoint:CGPointMake(10.0, 20.0) withFont:
[UIFont systemFontOfSize: [UIFont systemFontSize]]];
//fps display from page 76 of iPhone Game Development
int FPS = [((Test_FrameworkAppDelegate*)m_pManager) getFramesPerSecond];
NSString* strFPS = [NSString stringWithFormat:@"%d", FPS];
[strFPS drawAtPoint:CGPointMake(10.0, 60.0) withFont:[UIFont systemFontOfSize:
[UIFont systemFontSize]]];
}
//this is missing from the code listing on page 77.
-(void) touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
{
UITouch* touch = [touches anyObject];
NSUInteger numTaps = [touch tapCount];
if(numTaps > 1) {
[m_pManager doStateChange:[gsTest class]];
}
}
@end
Dank für das Laufen, das kompilieren. Mit Ihrer Hilfe sehe ich endlich das Problem. Ich kompiliere eine Version, die ich nach den Anweisungen des Buches erstellt habe (in den zusätzlichen Details der Frage). Was zu dem von dir kompilierten p77-Beispiel führen sollte. Die Renderfunktion im 'p77-Ergebnis' unterscheidet sich erheblich von den Anweisungen in p71-p73. Ich denke, ich muss einfach die gsMain-Klasse von p77 kopieren, anstatt den Anweisungen auf dem eigentlichen Buch zu folgen. – Azeworai
Ich fing an, das Beispiel p71 Projekt zu referenzieren und ich kompiliere für iPhoneOS 3.1.2 – Azeworai