小编Jar*_*ron的帖子

在运行时更改SpriteNode PhysicsBody大小

我希望能够在用户向下滑动时更改节点的physicsBody高度,但除了重置整个physicsBody之外,还无法找到如何执行此操作.

当我最初加载节点时,我使用以下代码:

    nodeHero.color = UIColor .grayColor()
    nodeHero.size.width = 20
    nodeHero.size.height = 45
    nodeHero.position.x = -frame.size.width/2 + 45
    nodeHero.position.y = pointMainY + 30 + nodeHero.size.height/2
    nodeHero.zPosition = 110

    nodeHero.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(nodeHero.size.width, nodeHero.size.height))
    nodeHero.physicsBody?.mass = 1
    nodeHero.physicsBody?.angularVelocity = 0
    nodeHero.physicsBody?.allowsRotation = false
    nodeHero.physicsBody?.restitution = 0
    nodeHero.physicsBody?.categoryBitMask = bitHero

    addChild(nodeHero)
Run Code Online (Sandbox Code Playgroud)

当我向下滑动时,我希望能够做这样的事情(这不起作用):

    nodeHero.size.height = 28
    nodeHero.physicsBody?.size.height = 28
Run Code Online (Sandbox Code Playgroud)

但我必须再次使用nodeHero.physicsBody = SKPhysicsBody(),它会重置所有其他physicsBody属性,所以我必须这样做:

    nodeHero.size.height = 28

    nodeHero.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(nodeHero.size.width, nodeHero.size.height))
    nodeHero.physicsBody?.mass = 1
    nodeHero.physicsBody?.angularVelocity = 0
    nodeHero.physicsBody?.allowsRotation = false
    nodeHero.physicsBody?.restitution = 0
    nodeHero.physicsBody?.categoryBitMask = …
Run Code Online (Sandbox Code Playgroud)

size skphysicsbody skspritenode swift

6
推荐指数
1
解决办法
1200
查看次数

从数字中删除数字

有没有人知道是否有一种方法可以从一个数字中删除(修剪)最后两位数字或前两位数字.我有4131号码,我想把它分成41和31,但在搜索互联网后,我只是设法找到如何从字符串中删除字符,而不是数字.我尝试将我的号码转换为字符串,然后删除字符,然后将其转换回数字,但我一直收到错误.

我相信我可以通过将数字除以100来接收前两位数,然后将数字向下舍入,但我不知道如何获得最后两位数字?

有没有人知道用来实现我想要做的功能,或者任何人都能指出我正确的方向.

numbers trim swift

5
推荐指数
2
解决办法
4342
查看次数

隐藏/禁用 DataGridView 列/行调整行大小

有没有人知道在调整 datagridview 行和列大小时禁用出现的行的方法。这条线经常闪烁,所以我宁愿自己画一条实线并禁用默认的实线。

在此处输入图片说明

我希望通过绘制自己的粗线(我已经完成),它会绘制在默认闪烁的顶部,但不幸的是,两条线都出现了,闪烁的线通常出现在我的实线的右侧或左侧. 我不认为它是相关的,但是用于绘制下面的线的代码。

Private Sub DataGridView1_Paint(sender As Object, e As PaintEventArgs) Handles DataGridView1.Paint

    If resizingColumns = True Then

        Dim penRed As Pen
        penRed = New Pen(color.Red, 3)

        Dim cursorPosition As Integer = Me.DataGridView1.PointToClient(New Point(Cursor.Position.X, Cursor.Position.Y)).X

        e.Graphics.DrawLine(penRed, cursorPosition, 0, cursorPosition, Me.DataGridView1.Size.Height)

    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一另一种选择(我真的不想这样做)是将 AllowUserToResizeColumns 设置为 false(这也会隐藏列大小调整线),然后使用鼠标事件以编程方式调整列大小。

任何帮助或指导将不胜感激。

vb.net datagridview datagridviewcolumn vb.net-2010

5
推荐指数
1
解决办法
326
查看次数

EnumerateChildNodesWithName中的多个子节点

我正在使用enumerateChildNodesWithName删除和添加节点.我想知道是否有一种方法可以使用带有多个名称的enumerateChildNodesWithName.例如,目前我正在使用以下内容:

    nodeBase.enumerateChildNodesWithName("ground", usingBlock: {
        node, stop in
        if node.position.x + positionX < -self.frame.size.width/2 - sizeSegmentWidth/2 {
            node.removeFromParent()
        }
    })

    nodeBase.enumerateChildNodesWithName("obstacle", usingBlock: {
        node, stop in
        if node.position.x + positionX < -self.frame.size.width/2 - sizeSegmentWidth/2 {
            node.removeFromParent()
        }
    })
Run Code Online (Sandbox Code Playgroud)

但我希望做的是这样的事情(这不起作用,只是我正在尝试做的一个例子):

    nodeBase.enumerateChildNodesWithName("ground" || "obstacle", usingBlock: {
        node, stop in
        if node.position.x + positionX < -self.frame.size.width/2 - sizeSegmentWidth/2 {
            node.removeFromParent()
        }
    })
Run Code Online (Sandbox Code Playgroud)

xcode nodes removechild sprite-kit swift

4
推荐指数
1
解决办法
1878
查看次数

VB.net 无边框窗体在任务栏上最大化

当我最大化我的无边框表单时,该表单会覆盖整个屏幕,包括任务栏,这是我不希望它这样做的。我发现很难在网上找到我的问题的解决方案,我想出的只是下面的代码,它在短时间内显示任务栏,但随后消失了,表单仍然占据了整个屏幕。

Private Sub TableLayoutPanel1_DoubleClick(sender As Object, e As MouseEventArgs) Handles TableLayoutPanel1.DoubleClick
    If e.Location.Y < 30 Then
        Me.WindowState = FormWindowState.Maximized
        Me.ControlBox = True
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

我开始认为解决我的问题的唯一方法是找到屏幕尺寸高度减去任务栏高度以获得表单高度,但我希望可能有一个更简单的答案。

vb.net taskbar maximize maximize-window

3
推荐指数
1
解决办法
1万
查看次数

更改当前单元格,而不删除选择

在 datagridview 中选择多个单元格后,我希望当前单元格等于在 datagridview 中选择的第一个单元格。我遇到的问题是,在做出选择后(鼠标向上),我将当前单元格设置为第一个选定的单元格(me.datagridview.currentcell =),但这会删除 datagridview 中的所有其他选择。有谁知道更改当前单元格而不删除 datagridview 选择的方法。当前示例代码如下:

    Private Sub DataGridView1_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseUp

    a = 0
    Do While a < Me.DataGridView1.RowCount
        b = 0
        Do While b < Me.DataGridView1.ColumnCount
            If Me.DataGridView1.Rows(a).Cells(b).Selected = True Then
                Me.DataGridView1.CurrentCell = Me.DataGridView1.Rows(a).Cells(b)
                GoTo skipstep
            End If
            b += 1
        Loop
        a += 1
    Loop

    skipstep:

    End Sub
Run Code Online (Sandbox Code Playgroud)

vb.net datagridview selection

3
推荐指数
1
解决办法
1151
查看次数

从整数中获取数字值的简单方法

我需要细分一个3位数字来获得每个数字的值.我知道如何使用以下内容获取第一个和最后一个数字的值:

var myInt: Int = 248

print(myInt/100) // first number equals 2
print(myInt%10) // last number equals 8
Run Code Online (Sandbox Code Playgroud)

我也知道如何使用以下方法获得中间数字的值:

print((myInt - myInt/100*100 - myInt%10)/10) // middle number equals 4
Run Code Online (Sandbox Code Playgroud)

但是,我觉得我得到中间数字值的方式太乱了,并且可能有更简单的方法来获得相同的结果.

有没有人知道更简单的选项来获得中间数字的值,那么我目前使用的是什么?

int digits swift

2
推荐指数
1
解决办法
3533
查看次数

在一个序列内同时运行两个动作

我不确定我所寻求的是否可行,但我只是在检查以确保我没有做到这一点.

目前我有两个序列,它们同时运行.每个序列通过等待3秒开始,然后一个序列缩放节点,另一个序列调整该节点的alpha.所以代码看起来像这样:

node.runAction(SKAction.sequence([animationWait, animationScale]))
node.runAction(SKAction.sequence([animationWait, animationAlpha]))
Run Code Online (Sandbox Code Playgroud)

但是有没有办法在一个序列中同时运行animationScale和animationAlpha?所以它看起来像这样(这不起作用,但我希望你能看到我正在尝试做的事情):

node.runAction(SKAction.sequence([animationWait, (animationScale, animationAlpha)]))
Run Code Online (Sandbox Code Playgroud)

sequence sprite-kit skaction swift

1
推荐指数
1
解决办法
3269
查看次数

从数组中多次使用SKSpriteNode

我正在处理的应用程序有多个节点,这些节点会重复添加到游戏中.我一直在做的是使用纹理数组创建新的SKSpriteNodes,一旦添加了节点,我就为该节点分配一个特定的物理体.但我想要做的不是拥有一个纹理数组,而是拥有一个预先分配了物理主体的SKSpriteNodes数组.

我相信我已经弄清楚如何做到这一点,我遇到的问题是当我尝试将SKSpriteNode多次添加到场景时.

例如,下面是我一直在玩,有效,但如果我添加另一行addChild(arraySegment_Type1 [0]为SKSpriteNode),我收到一个错误,应用程序崩溃.

override func didMoveToView(view: SKView) {

    anchorPoint = CGPointMake(0.5, 0.5)

    var arraySegment_Type1:[SKSpriteNode] = []
    var sprite = SKSpriteNode(imageNamed: "myimage")

    sprite.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(sprite.size.width, sprite.size.height))
    sprite.physicsBody?.dynamic = false
    sprite.name = "mysprite"

    arraySegment_Type1.append(sprite)

    addChild(arraySegment_Type1[0] as SKSpriteNode)

}
Run Code Online (Sandbox Code Playgroud)

有谁知道我怎么能从阵列多次加载SKSpriteNodes?

arrays sprite-kit skphysicsbody skspritenode swift

1
推荐指数
1
解决办法
2313
查看次数

调整精灵的亮度

我有一个按钮,当触摸它时,我希望它缩小并稍微变暗。SKAction.scaleTo缩小按钮 ( )很容易,但我似乎找不到使其变暗的方法(我实际上不确定是否可以使用 使精灵变暗SKAction)。

我可以在按钮顶部添加一个纯黑色精灵,并调整 alpha 使其在触摸时变暗,但在我将其实现到我的代码中之前,我只是想确保没有更简单的可用内容,我只是没有还没发现。

action sprite brightness sprite-kit swift

1
推荐指数
1
解决办法
412
查看次数

三角函数 (cos) 返回不同值到计算器

当我在计算器上使用 cos 函数 cos(0) = 1、cos(90) = 0 cos(180) = -1 和 cos(270) = 0 时。但是我不知道如何在我的计算机中产生这些结果代码。我在代码中收到的结果不是 1 就是 -1,但绝不是 0。下面是我尝试过的结果,但没有一个给出与计算器相同的结果,我错过了什么?

print(cos(0))               // receiver error "Ambiguous use of 'cos'"
print(cos(90))              // receiver error "Ambiguous use of 'cos'"
print(cos(180))             // receiver error "Ambiguous use of 'cos'"
print(cos(270))             // receiver error "Ambiguous use of 'cos'"

print(cos(M_PI*0))          // returns 1
print(cos(M_PI*1))          // returns -1
print(cos(M_PI*2))          // returns 1
print(cos(M_PI*3))          // returns -1

print(cos(M_PI*0))          // returns 1
print(cos(M_PI*90))         // returns 1
print(cos(M_PI*180))        // returns 1 …
Run Code Online (Sandbox Code Playgroud)

trigonometry swift

0
推荐指数
1
解决办法
1849
查看次数