iphone app使用phonegap很慢

时间:2011-09-15 04:58:53

标签: javascript iphone android html5 cordova

我使用phonegap开发了一个iphone / android绘图功能应用程序。在触摸开始和触摸移动时,app可以在画布上绘制线条(上下文)。 在线绘图非常慢。应用程序的加载时间非常慢。(启动画面显示自己至少6-8秒。

www文件夹的大小小于2MB。我们正在加载复杂或沉重的图形。

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:1)

这是一个难以超越的限制。使用Web技术执行此操作必然会产生此副作用。只能使用2D图形来解决这个问题。

答案 1 :(得分:0)

我不确定这是不是你的意思,但为了让它以通常的方式绘制,这就是你的代码应该是这样的:

请注意,您可以更改上下文的设置。

@synthesize canvas, drawing; //Both UIImageViews
CGPoint touchPrev;
CGPoint touchLoc;

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch * touch = [touches anyObject];
    touchPrev = [touch locationInView:self.view];
}

-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch * touch = [touches anyObject];
    touchLoc = [touch locationInView:self.view];

    UIGraphicsBeginImageContext(canvas.frame.size);
    [canvas.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(context, 8);
    CGContextSetRGBStrokeColor(context, 0.8, 0, 0, 1);

    CGContextSetLineCap(context, kCGLineCapRound);

    CGContextBeginPath(UIGraphicsGetCurrentContext());
    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), touchLoc.x, touchLoc.y);
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), touchPrev.x, touchPrev.y);
    CGContextStrokePath(UIGraphicsGetCurrentContext());

    canvas.image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    touchPrev = touchLoc;
}

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    touchPrev = touchLoc;
}