我试图检测我的sprite节点是否已被触摸并且我不知道从哪里开始。
let Pineapple = SKSpriteNode(imageNamed: "Pineappleimg")
Pineapple.userInteractionEnabled = true
Pineapple.position = CGPoint(x: CGRectGetMidX(self.frame) - 200, y: CGRectGetMidY(self.frame));
self.addChild(Pineapple)
首先将的name
属性设置SKSpriteNode
为字符串。
pineapple.name = "pineapple"
pineapple.userInteractionEnabled = false
然后在touchesBegan
功能上Scene
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let touch:UITouch = touches.anyObject()! as UITouch
let positionInScene = touch.locationInNode(self)
let touchedNode = self.nodeAtPoint(positionInScene)
if let name = touchedNode.name
{
if name == "pineapple"
{
print("Touched")
}
}
}
这是一种方法。
您也可以继承SKSpriteNode
并覆盖其中的touchesBegan
内部。
class TouchableSpriteNode : SKSpriteNode
{
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
print("touched")
}
}
然后做
let pineapple = TouchableSpriteNode(imageNamed: "Pineappleimg")
pineapple.userInteractionEnabled = true
pineapple.position = CGPoint(x: CGRectGetMidX(self.frame) - 200, y: CGRectGetMidY(self.frame));
self.addChild(pineapple)
问题内容: 我发现了一个类似的问题,但是我试图检测并识别用户触摸哪个Sprite,但我不知道该怎么做。这是我的变量: 这个想法是先确定spriteNode,然后将其替换为其他sprite或更改颜色,但是我不知道如何使用此spriteNodes矩阵来实现它,我想第一步是确定sprite。 问题答案: 您正在尝试执行的操作(即使我没有看到这样做的原因)也可以使用委派模式来完成。基本上,您将告诉您的代表
在过去的几天里,我一直在将我的游戏(Apopalypse)移植到Android Mobile平台。我在Google上快速搜索了精灵触摸检测,但没有找到任何有用的东西。每个气球触摸一次就会弹出,我只需要检测它是否被触摸。这是我的气球生成代码: 渲染(x、y、宽度和高度随机): 在主游戏类中产卵:
本文向大家介绍sprite-kit 检测触摸,包括了sprite-kit 检测触摸的使用技巧和注意事项,需要的朋友参考一下 示例 您可以覆盖4种SKScene检测用户触摸的方法 请注意,每种方法都接收一个touches参数(在特定情况下),该参数可以包含一个以上的单个触摸事件。
问题内容: 我有一个使用方法实现自定义的库,该方法将在调用时触发事件。我想测试该行为的方法。 我的自定义控件: 和测试: 问题在于该方法永远不会被调用,因此无法实现。 问题是:在这种情况下,我们如何进行测试?也许我们需要以某种方式强制运行循环? 编辑1:请注意,由于我正在测试库,因此我的测试目标没有任何主机应用程序。当测试目标具有主机应用程序时,以上测试通过。 问题答案: Apple的UICont
问题内容: 在不使用触摸屏设备的情况下,使用媒体查询最安全的方法是什么?如果无法解决,您是否建议使用JavaScript解决方案,例如Modernizr或Modernizr? 问题答案: 我建议使用modernizr并使用其媒体查询功能。 但是,使用CSS时,存在伪类,例如Firefox。您可以使用:-moz-system-metric(touch- enabled)。但是,并非所有浏览器都提供这
问题内容: 我正在尝试检查用户单击按钮后是否已加载iframe。 我有 的HTML 有什么建议么? 顺便说一下,我的iframe是动态创建的。它不会随初始页面加载一起加载。 问题答案: 您可以尝试使用() 更新: 使用普通格式 更新: 您也可以尝试一下(动态iframe)