如何解决在cocos2d游戏中添加一个放大镜
| 我想在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];
但结果是:放大镜内部为黑色。
另外,这种放大镜只能放大相同比例的图像,我如何更改它以在中心附近放大而在边缘附近放大呢? (就像真正的放大镜一样)
谢谢 !!!
解决方法
在这里,我假设您想放大屏幕的中心。
您必须根据您的应用程序的需求动态更改大小属性。
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];
, Cocos2d使用OpenGL而不是CoreAnimation / Quartz进行绘制。您正在绘制的CALayer是空的,因此您什么也看不到。您将不得不使用OpenGL图形代码来执行放大镜效果,或者对像素进行采样并适当地对其进行更改以实现放大效果,就像在您所链接的文章中引用的Christmann文章中所做的那样。该代码还依赖于CoreAnimation / Quartz,因此您将需要找到另一种方法来处理要放大的图像数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。