在iphone上使用绘制的图像进行游戏

时间:2011-09-22 17:00:12

标签: iphone objective-c

我想将这个用户绘制的图像用于随后的游戏 - 我需要它做得更小并且转到屏幕顶部以便它可以左右移动(闪避对象)。我接下来该怎么办?

@implementation DrawView


- (id)initWithFrame:(CGRect)frame {

self = [super initWithFrame:frame];
if (self) {
    // Initialization code.
}
return self;
}


// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code.
CGColorRef yellow = [[UIColor yellowColor] CGColor];
CGColorRef red = [[UIColor redColor] CGColor];
CGColorRef blue = [[UIColor blueColor] CGColor];

context = UIGraphicsGetCurrentContext();



// draw tryangle
CGContextBeginPath(context);

// give vertices
CGContextMoveToPoint(context, point.x, point.y);
CGContextAddLineToPoint(context, point.x+10, point.y);
CGContextAddLineToPoint(context, point.x+10, point.y+10);
   CGContextAddLineToPoint(context, point.x, point.y+10);

CGContextClosePath(context);

// fill the path
CGContextSetFillColorWithColor(context, red);
CGContextFillPath(context);
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
touch=[[event allTouches]anyObject];
point= [touch locationInView:touch.view];
[self setNeedsDisplayInRect:CGRectMake(point.x, point.y, 10, 10)];


}

- (void)dealloc {
[super dealloc];
}


@end

1 个答案:

答案 0 :(得分:1)

至于如何创建一个允许用户绘制图片的程序,这是一个比stackoverflow问题更重要的问题。但我们假设您已获得用户输入并将其表示为一组点,颜色等。您有正确的想法使用drawRect在视图中绘制该变量内容。

但是,不是每次移动内容都重绘内容,只需在视图中的相同位置绘制内容并移动整个视图。例如,而不是绘制带角落的正方形

(point.x,point.y),(point.x + 10,point.y),(point.x + 10,point.y + 10),(point.x,point.y + 10)

画一个有角落的正方形

(0,0),(10,0),(10,10),(0,10)

然后在touchesMoved而不是setNeedsDisplay的行中,写下

self.center = point;

另外,为了使其更小,您可以设置视图的transform属性。因此,假设视图自然地将自己绘制得很大,用户绘制它的方式,然后使它更小,你可以编写

self.transform = CGAffineTransformMakeScale(0.1, 0.1);

这将使其达到十分之一。