- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,我正在尝试将 Sprite 覆盖设置为水,并将 alpha 设置为 0.3下面的其他 Sprite 都是鱼,但我无法触摸鱼,因为水 Sprite 吞下了触摸
来自这篇文章[ iOS7 Sprite Kit how to disable touches on a sprite to make it "tap through"?
它说要对 SKSpriteNode 进行子类化,所以在阅读了子类化之后我做了这个https://www.dropbox.com/s/mt067syvbvkmhjb/newClass.zip?dl=0我看不出我哪里错了?任何帮助都会很好干
我的 GameScene.swift
import SpriteKit
class GameScene: SKScene
{
override func didMoveToView(view: SKView)
{
let fishsprite = fish(imageNamed: "fish")
fishsprite.position = CGPoint(x: 512, y:350)
fishsprite.zPosition = 1
fishsprite.name = "fish"
addChild(fishsprite)
let watersprite = water(imageNamed: "water")
watersprite.position = CGPoint(x: 512, y: 360)
watersprite.zPosition = 3
watersprite.alpha = 0.3
watersprite.name = "Water"
addChild(watersprite)
}
}
我的水课
import SpriteKit
class water : SKSpriteNode
{
required init(coder aDecoder: NSCoder)
{
fatalError("NSCoding not supported")
}
init(imageNamed: String) {
let waterTexture = SKTexture(imageNamed: imageNamed)
super.init(texture: waterTexture, color: nil, size: CGSize(width: 1024, height: 768))
userInteractionEnabled = false // blocks the touches from everything
// userInteractionEnabled = true //gets the touches but stop fish getting them
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch in (touches as! Set<UITouch>)
{
// let location = touch.locationInNode(scene)
// let touchedNode = nodeAtPoint(location)
// println(touchedNode.zPosition)
//
}
}
override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch in (touches as! Set<UITouch>)
{
}
}
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch in touches
{
}
}
}
我的鱼课
import Foundation
import SpriteKit
class fish : SKSpriteNode
{
required init(coder aDecoder: NSCoder) {
fatalError("NSCoding not supported")
}
init(imageNamed: String)
{
let fishTexture = SKTexture(imageNamed: imageNamed)
super.init(texture: fishTexture, color: nil, size: fishTexture.size())
userInteractionEnabled = true
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch in (touches as! Set<UITouch>)
{
let location = touch.locationInNode(scene)
let touchedNode = nodeAtPoint(location)
println(touchedNode)
zPosition = 15
let liftUp = SKAction.scaleTo(1.2, duration: 0.2)
runAction(liftUp, withKey: "pickup")
let wiggleIn = SKAction.scaleXTo(1.0, duration: 0.2)
let wiggleOut = SKAction.scaleXTo(1.2, duration: 0.2)
let wiggle = SKAction.sequence([wiggleIn, wiggleOut])
let wiggleRepeat = SKAction.repeatActionForever(wiggle)
runAction(wiggleRepeat, withKey: "wiggle")
}
}
override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch in (touches as! Set<UITouch>)
{
let location = touch.locationInNode(scene)
let touchedNode = nodeAtPoint(location)
touchedNode.position = location
touchedNode.zPosition = 15
println(touchedNode)
}
}
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch in touches
{
zPosition = 2
let dropDown = SKAction.scaleTo(1.0, duration: 0.2)
runAction(dropDown, withKey: "drop")
removeActionForKey("wiggle")
}
}
}
最佳答案
嘿,我想出了一些解决方法,
无论您想点击哪个节点,
设置节点名称“Overlay”
现在这个节点从下面的其他节点中脱颖而出
您可以在touched begin中使用此代码
for touch in touches {
let location = touch.locationInNode(self)
var allNodesTouched = nodesAtPoint(location)
allNodesTouched.forEach({ (nodeTouched) in
if nodeTouched.name == "Overlay" {
let I = allNodesTouched.indexOf(nodeTouched)
allNodesTouched.removeAtIndex(I!)
}
})
if let selectedNode = allNodesTouched.first {
}
}
现在您可以使用 selectedNode
关于ios - Sprite 套件触摸 userInteractionEnabled = true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31165355/
我正在尝试创建一个包裹在 UIViewController 中的 float 按钮。一个 float 按钮,如:https://material.google.com/components/butto
我想禁用单元交互。在我的函数中: - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSI
这可能是一个菜鸟问题,但我想在非主线程的线程中更改 View 的 userInteractionEnabled 属性,这样做安全吗? 最佳答案 任何与 UIKit 的交互都应该在主线程中完成。这包括与
我尝试将 userinteractionEnabled: 设置为 AVPlayerViewController 的 NO [playerViewController setUserInteractio
Cocos 2d-iphone 3.0.我正在使用此代码来检测是否触摸了单个 Sprite -(void) touchBegan:(UITouch *)touch withEvent:(UIEvent
我有一个在屏幕上显示动画的 subview ,当它出现在屏幕上时,我希望 super View (在我的例子中是背景中的 View )忽略触摸事件。我尝试了一切,但没有用。 有没有办法“强制” sup
我到处都找过了,但没有任何效果。以为我会自己问这个问题。我正在使用 SpriteKit 在 iOS 9 中创建一个小游戏。我的游戏将有左右 Controller 按钮来移动玩家 Sprite 。我按如
嗨,我正在尝试将 Sprite 覆盖设置为水,并将 alpha 设置为 0.3下面的其他 Sprite 都是鱼,但我无法触摸鱼,因为水 Sprite 吞下了触摸 来自这篇文章[ iOS7 Sprite
在显示带有进度指示器的叠加 View 时,我遇到了一个非常奇怪的用户交互问题。 在主视图上,我有上一个和下一个按钮,然后单击下一个按钮,我进行了网络服务调用,在此过程中,我显示了一个带有进度指示器的叠
似乎有一个answer ,但是当我尝试提供的方法时,它就是行不通! @interface MyView : UIView @end @implementation MyView - (UIView *
我的程序基本上是这样的: UIViewController -> 自定义 UIView -> [UIImageView 数组] 我的问题是我的识别器的操作方法从未被调用。我已经将 UIImageVie
我试图使用 textColor 属性简单地更改我的 UILabel 的颜色,当禁用 userInteraction 时它将不起作用,这没有任何意义,那里文档中根本没有提到这一点。但这就是如果我删除该行
我有一个 UITextField,它必须闪烁光标,即使它的 userInteractionEnabled 属性设置为 NO。我不希望 UITextField 成为FirstResponder 并显示键
我使用 TTTAttributedLabel用于自定义我的 UILabel。但有一个问题,当我用手指按住标签时,我不希望有“复制到剪贴板”的功能,并且在官方文档中,似乎没有办法禁用此功能。 有人知道怎
我正在 keyWindow 之上创建一个透明层 UIWindow *window = [[UIApplication sharedApplication] keyWindow]; _topLayer
我试图跳过当用户浏览我的表格 View 时被禁用的文本字段。但是,当它们到达可见单元格的边界时,一切都会变得困惑,因为我试图检测文本字段是否被禁用,如果是,则再次递归调用我的方法以再次导航。 IE。如
我正在为 iOS 开发一个井字游戏,我正在使用 UIButtons 和 UIImageViews 的组合来允许用户交互并显示所做的 Action 。我的问题是按钮在 CPU 移动之前继续接受用户输入,
self.navigationController.navigationBar.userInteractionEnabled = NO; 在 viewDidLoad: 和 viewWillAppear
我正在尝试 iOS 中的纺车概念。我的基础教程是 here UIControl 是这里的核心。 Superview 的 userinteraction 总是被禁用。 那么如何单独为其 subview
我有一个带有按钮的单元格,将 UserInteractionEnabled 设置为 false 也会禁用该按钮。现在,如果我使用 cell.selectionStyle = UITableViewCe
我是一名优秀的程序员,十分优秀!