CGContextSetFillColorWithColor(g, [UIColor greyColor].CGColor);
Sto cercando di seguire il libro di O'Reilly, iPhone Game Development, ma a pagina 73 Capitolo 3 I ottenere questo errore:Come accedere alla proprietà CGColor di UIColor in CGContextSetFillColorWithColor?
error: request for member 'CGColor' in something not a structure or union
Secondo il libro di errata page si tratta di un'errata non confermato nel libro. Con quale codice funzionale è possibile sostituire quella linea?
Dettagli aggiuntivi
Il progetto di esempio può essere scaricato here.
stavo incontrando l'errore alla funzione di rendere seguendo le istruzioni del libro a partire da pagina 72 a pagina 73 per la costruzione della classe gsMain (il suo diverso dal pg77 progetto di esempio) alla funzione di rendering di gsMain.m
il frammento di codice che il libro insegna a costruire classe gsMain è come segue:
//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
il Chapter3_Example_p77 dovrebbe mostrare il risultato degli esercizi da pagina 71 a 77, ma è molto diverso dalle date istruzioni fornite nel 71 a 77. Il codice seguente è la classe compilata e compilata scaricata da quanto sopra collegamento.
//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
Grazie per l'esecuzione che compilano. Con il tuo aiuto finalmente vedo il problema. Sto compilando una versione che ho creato seguendo le istruzioni del libro (nei dettagli aggiuntivi della domanda). Il che dovrebbe portare all'esempio p77 che hai compilato. La funzione di rendering nel 'risultato di p77' è molto diversa dalle istruzioni del libro in p71-p73. Penso che dovrò solo copiare la classe gsMain di p77 invece di seguire le istruzioni sul libro vero e proprio. – Azeworai
Ho iniziato a fare riferimento al progetto p71 di esempio e sto compilando per iPhoneOS 3.1.2 – Azeworai