在cocos2d游戏中添加放大镜

时间:2011-05-30 10:04:30

标签: iphone objective-c ios cocos2d-iphone

我想在cocos2d游戏中添加一个放大镜。这是我在网上找到的: http://coffeeshopped.com/2010/03/a-simpler-magnifying-glass-loupe-view-for-the-iphone 我已经改变了一些代码:(因为我不想让放大镜跟随我们的触摸)

- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:magnifier_rect])) {
    // make the circle-shape outline with a nice border.
    self.layer.borderColor = [[UIColor lightGrayColor] CGColor];
    self.layer.borderWidth = 3;
    self.layer.cornerRadius = 250;
    self.layer.masksToBounds = YES;
    touchPoint = CGPointMake(CGRectGetMidX(magnifier_rect), CGRectGetMidY(magnifier_rect));
}
return self;
}

然后我想在我的一个场景初始化方法中添加它:

    loop = [[MagnifierView alloc] init];
    [loop setNeedsDisplay];
    loop.viewToMagnify = [CCDirector sharedDirector].openGLView;

    [[CCDirector sharedDirector].openGLView.superview addSubview:loop];

但结果是:放大镜内的区域是黑色的。 此放大镜只是以相同的比例放大图像,如何更改它以在中心附近放大更多并且靠近边缘? (就像真正的放大镜一样) 谢谢!!!

2 个答案:

答案 0 :(得分:2)

Cocos2d使用OpenGL绘制,而非CoreAnimation / Quartz。您正在绘制的CALayer是空的,所以您什么也看不见。您将必须使用OpenGL图形代码来执行放大镜效果或对像素进行采样并相应地更改它们以实现放大效果,如您在链接到的文章中引用的the Christmann article中所做的那样。该代码还依赖于CoreAnimation / Quartz,因此您需要找到另一种方法来获取您希望放大的图像数据。

答案 1 :(得分:2)

这里我假设你想要放大屏幕的中心。

您必须根据应用需求动态更改动态尺寸属性。

CGSize size = [[CCDirector sharedDirector] winSize];

id lens = [CCLens3D actionWithPosition:ccp(size.width/2,size.height/2) radius:240 grid:ccg(15,10) duration:0.0f]; 

[self runAction:lens];