Я изучаю программирование игр для iPhone из книги Пола Зиркля и Джо Хога, за исключением того, что немного изменил ситуацию. Скорее всего, вы не знаете эту книгу, поэтому я объясню вам структуру моего приложения. У меня есть один xib, MainMenu.xib, который имеет только окно. Никаких других сибсов. Тогда у меня есть контроллер представления и на данный момент один подкласс UIView. (И, конечно, мой представитель приложения). Прямо сейчас приложение должно повернуть экран синим цветом и нарисовать FPS (29) черным. Вот что происходит:
http://img27.imageshack.us/img27/6918/screenshot20110621at100.png (я не мог вставить это, форум не позволил бы мне)
Ой! FPS в моей консоли говорит 29! И в левом нижнем углу экрана есть маленький ноль. Вот мой код для нарисованного в настоящее время UIView:
#import "MainMenuState.h"
@implementation MainMenuState
- (void)drawRect:(CGRect)rect
{
g = UIGraphicsGetCurrentContext();
[self render];
}
- (void)updat { // yes, updat
}
- (void)render {
//NSLog(@"render called (MainMenuState)");
UIGraphicsPushContext(g);
if (g == nil)
NSLog(@"g == nil"); // Doesn't print b/c it shouldnt
if (UIGraphicsGetCurrentContext() == nil)
NSLog(@"UIGraphicsGetCurrentContext == nil"); // also doesnt for same reason
// fill background with blue
CGContextSetFillColorWithColor(g, [UIColor blueColor].CGColor);
CGContextFillRect(g, [self bounds]);
// Let's draw the FPS now
int fps = [[[UIApplication sharedApplication] delegate] getFPS];
NSLog(@"Received FPS of %d (MainMenuState)", fps); // prints 29
NSString *fpsString = [NSString stringWithFormat:@"%d", fps];
NSLog(fpsString); // prints 29
CGContextSetFillColorWithColor(g, [UIColor blackColor].CGColor);
[fpsString drawAtPoint:CGPointMake(30.0, 60.0) withFont:[UIFont systemFontOfSize:[UIFont systemFontSize]]];
UIGraphicsPopContext();
}
- (void)dealloc
{
[super dealloc];
}
@end
Я поместил пару заметок справа, думаю, вам нужно прокрутить представление кода, чтобы увидеть их.
В любом случае должно отображаться 29 вместо нуля. Что не так?