gpt4 book ai didi

button - cocos2d通过按钮扩展触摸区域

转载 作者:行者123 更新时间:2023-12-04 05:14:49 24 4
gpt4 key购买 nike

我有一些单选按钮,但是触摸区很小。触摸区域取决于图像尺寸。有没有一种优雅的方法可以使用cocos2d扩展触摸区域而不使用更大的图像,也可以使用cgrect来创建我自己的触摸区域?
setContentSize做我想要的。不幸的是,图像移动到了contentsize的左下角。设置 anchor 可移动contentsize,但图像会保留在左下角。

    CCMenuItem* pickEasy = [CCMenuItemImage itemFromNormalImage:@"radiobutton_off.png" selectedImage:@"radiobutton_on.png" target:self selector:@selector(pickEasyTapped:)];
pickEasy.position = ccp(ss.width * 0.40, ss.height * 0.78);
[pickEasy setContentSize:CGSizeMake(50, 50)];

提前致谢。

最佳答案

您需要重写rectInPixels方法

- (CGRect)rectInPixels
{
CGSize s = [self contentSize];
return CGRectMake(0, 0, s.width, s.height);
}

- (BOOL)containsTouchLocation:(UITouch *)touch
{
CGPoint p = [self convertTouchToNodeSpace:touch];
CGRect r = [self rectInPixels];
return CGRectContainsPoint(r, p);
}

- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {

NSSet *allTouches = [event allTouches];
for (UITouch *aTouch in allTouches) {

if ( ![self containsTouchLocation:aTouch] ) return NO;
}

return YES;
}

这只是告诉 Sprite 检查您更改的CGRect中的触摸是否在

编辑以显示CCSprite子类-
- (void)onEnter
{
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
[super onEnter];
}

- (void)onExit
{
[[CCTouchDispatcher sharedDispatcher] removeDelegate:self];
[super onExit];
}

关于button - cocos2d通过按钮扩展触摸区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5622390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com