- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我真的很想深入了解为什么这段代码会导致对触摸输入的间歇性响应...即使将 NSLog 作为第一条指令...
我刚刚用 Box2d 在 cocos2d 中为一个游戏创建了一个新项目,在这个阶段只需要一些简单的东西......
出现在屏幕中央的篮子。它必须是 b2Fixture
并且落在表面上。然后,如果用户触摸了屏幕,我希望篮子缩放到触摸点,然后用户可以从那里在屏幕上拖动它。
当用户放手时,篮子会掉落...我现在正在使用...
但是BUG是触摸屏幕并不总是有效......它间歇性地响应触摸,因此间歇性地调用方法。
正如您将在下面看到的,我使用了 NSLog
来检查每个方法何时被调用。结果是有时你必须将手指从屏幕上抬起然后再抬起几次,然后“看似随机”,它会决定运行代码....
这是我得到的...
我的触摸方法....
-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"Multi Touch Moved...");
if (_mouseJoint == NULL) return;
UITouch *myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView:[myTouch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
b2Vec2 locationWorld = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO);
_mouseJoint->SetTarget(locationWorld);
}
-(void)ccTouchCancelled:(UITouch *)touch withEvent:(UIEvent *)event
{
NSLog(@"\nThe touch was CANCELED...");
}
-(void) ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
NSLog(@"Single Touch Moved...");
}
- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView:[myTouch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
b2Vec2 locationWorld = b2Vec2(location.x/PTM_RATIO, location.y/PTM_RATIO);
NSLog(@"\n\nTouch did begin...");
if (_mouseJoint != NULL)
{
_mouseJoint->SetTarget(locationWorld);
NSLog(@"The IF statment was met...");
return;
}
NSLog(@"The IF statment was NOT met...Running _mouseJoint setup...");
b2MouseJointDef md;
md.bodyA = _groundBody;
md.bodyB = _body;
md.target = _body->GetPosition();
md.collideConnected = true;
md.maxForce = 100000000.0f * _body->GetMass();
_mouseJoint = (b2MouseJoint *)_world->CreateJoint(&md);
_body->SetAwake(true);
_mouseJoint->SetTarget(locationWorld);
}
-(void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if (_mouseJoint != nil) {
_world->DestroyJoint(_mouseJoint);
_mouseJoint = nil;
}
}
这是一些代码引用的接口(interface)......
@interface HelloWorldLayer : CCLayerColor
{
b2World *_world;
b2Body *_body;
b2Fixture *_bodyFix;
b2MouseJoint *_mouseJoint;
b2Body *_groundBody;
}
另一个成员帮助我确定的唯一想法是,因为我在一个场景中工作,并且我在屏幕上有一个 CCMenu 和一个 CCLabelTTF,CCMenu 是否有可能仍在拦截触摸,并且如果是这样,我如何在动画完成后销毁 CCMenu?
按下唯一的按钮项目只是简单地将标题和标签(CCMenuItem)垂直移出屏幕......但对象仍然存在......
最佳答案
这里的问题是我的 CCMenu
仍在接收触摸(我假设在屏幕的某些部分形成了 CCMenuItems
)。
解决方案是在我的 @implementation
中而不是在我的 init
场景设置中声明我的 CCMenu
。
@implementation HelloWorldLayer
{
CCLabelTTF *label;
CCLabelTTF *startTheGameLabel;
CCSprite *theCattery;
CCMenu *_menu;
}
然后在我的 init 中,我没有在那里声明它,而是简单地分配给 @implementation
中的那个。
-(id) init { if( (self=[super initWithColor:ccc4(50, 180, 220, 255)]) )
{
//.. Other "irrelevant to question" scene setup stuff here...//
// Start the game button
startTheGameLabel = [CCLabelTTF labelWithString:@"Save Some Kitties!" fontName:@"Zapfino" fontSize:20];
CCMenuItemLabel *startTheGameLabelItem = [CCMenuItemLabel itemWithLabel:startTheGameLabel target:self selector:@selector(startGameStub:)];
// Push the menu
_menu = [CCMenu menuWithItems: startTheGameLabelItem, nil];
[self addChild:_menu];
//.. Other "irrelevant to question" scene setup stuff here...//
}
这使我可以在整个类里面访问 CCMenu
,因此我可以稍后在用户做出选择后禁用触摸输入。
-(void) startGameStub:(id)sender
{
CGSize size = [[CCDirector sharedDirector] winSize];
// Clear the labels off the screen
CMoveTo *moveTheTitleLabelAction = [CCMoveTo actionWithDuration:1.0 position:ccp(label.position.x, size.height + label.boundingBox.size.height)];
CCMoveTo *moveTheStartLabelAction = [CCMoveTo actionWithDuration:1.0 position:ccp(startTheGameLabel.position.x, size.height + startTheGameLabel.boundingBox.size.height)];
// Commit actions
[label runAction:moveTheTitleLabelAction];
[startTheGameLabel runAction:moveTheStartLabelAction];
// LIFE SAVING MESSAGE!!!
[_menu setTouchEnabled:NO]; // This is what fixes the problem
}
关于iOS Box2d/Cocos2d : Sometimes Ignores My Touch, 导致间歇性游戏中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23882360/
Note The specifics in this question regarding read_line and ~str pertain to a pre-1.0 version of Rus
我正在研究 Python 中字典的使用,我对必须用来将键与值分开的符号以及键的“”感到越来越困惑。 通常,我会这样写: user = {"name": "John", "surname": "Doe"
这post's answer建议 PEP 8: E128 要求在第一行之后的行上有空格,当它们都包含在括号内时。但是,对于 if 语句,情况似乎并非如此。您可以看到前三行没有警告,而后三行有警告,因为
作为个人挑战,我正在尝试创建一个工具,该工具将使用Puppeteer抓取网站(本实验所使用的购物平台AliBaba)的搜索结果,并将输出保存到JSON对象中,以便以后用于创建前端的可视化。 我的第一步
我注意到在 WPF 中,当尝试从后台线程更新 UI 时(我知道你不应该这样做 - 只是玩弄东西),有时它会抛出 InvalidOperationException,有时它只是什么也没做。我第一次注意到
为什么R与plot()函数中的add参数不一致?有时有效有时无效!在此示例中,它采用参数 add=TRUE 没有问题: plot(0:10, 0:10*3) plot(identity, add=TR
我正在尝试用 node.js 制作一些东西,我(和其他开始学习 node 的人一样)对它的异步性质有疑问。我四处搜索了一下,但找不到关于它的具体问题的答案(也许我只是搜索得不是很好......),所以
我有一个垫表,它调用 GET要求。我还有一个 Mat Dialog,它可以获取数据并保存点击调用 POST要求。一切正常,但有时在我单击“保存”按钮后表格会更新,但有时不会(我必须重新加载页面并查看它
我正在使用 GSON 来解析 JSON 字符串,但有一个键包含 Json,它有时是对象,有时是数组。 所以请帮助我使用 gson 将它解析为模型类。 Resonse with Array { "
我想知道为什么在 Mac OS X 上的滚动条有时是白色透明的,有时是黑色透明的,如果您在常规设置中将“显示滚动条”设置为“滚动时”。所有浏览器(Safari、Chrome、Firefox、Opera
我已经开发了一个需要使用本地化的应用程序,所以我选择了 this nice library为我的申请。但我只是混淆了他们的文档中提到他们需要使用观察者通知来收听语言何时发生变化。但是在我的主 Cont
我在 ChildWindow 中使用 SL Toolkit 5 中的 BusyIndicator 控件。 在某些解决方案中,它可以工作,但在其他解决方案中,使用完全相同的代码(至少看起来),我在运
问题:我目睹了一种随机情况,其中 ob_get_conents() 什么都不返回,而它应该有一些东西。每天失败几千次。随机。 基础:我使用输出缓冲将特定的 HTML 生成输出包装到一个变量中并写入文件
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
我正在使用 React 和 EmailJS 设计联系表单。我的问题是,当我输入自己的姓名、电子邮件、电话或消息值时,电子邮件不起作用。当我单击“发送消息”按钮而不在“姓名”、“电子邮件”、“电话”或“
我很困惑。 我创建了以下位于 http://tapmeister.com/test/dom.html 的脚本.由于某些未知原因,tinymce.editors.ta1 和 tinymce.editor
我正在尝试在运行时实现自动类注册(我认为这种技术属于“注册模式”的名称)。在下面的示例中,我将 int 存储在静态成员 vector 中,但目标是存储以后可以调用的函数指针。 我的理解是,由于我下面代
我的程序有时会崩溃,有时当我对数组中的元素调用 free() 时不会。数组中的元素是一个结构。我将展示一些代码: //This first part might be a bit messy, and
我正在使用 Laravel Validator 类对数组进行一些基本验证。 我的数组: $employee['name']='name'; $employee['address']='address'
作为一名法国 Gwent 玩家,我构建了一个 discord 机器人(使用 node.js 和 discord.js)来在您命名卡片时显示卡片的信息。它使用一些自定义表情来显示其中的某些部分。 它在几
我是一名优秀的程序员,十分优秀!