小编Aar*_*ron的帖子

SKShapeNode的替代品

我有一个用SpriteKit设计的游戏,它很大程度上依赖于1个SKShapeNode(这是一条线).我正在制作这样的一行:

        if let path = createPathToMove() {
        let shapeNode = SKShapeNode()
        shapeNode.path = path
        shapeNode.name = "line"
        shapeNode.strokeColor = UIColor.blackColor()
        shapeNode.lineWidth = 20
        shapeNode.zPosition = 5
        shapeNode.antialiased = false
        shapeNode.lineCap = kCGLineCapRound
        self.world!.addChild(shapeNode)
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于这被设计为一个调试功能(Sprite-kit绘图),它没有针对我正在做的事情进行优化,更大的问题是该行有伪影(因为它的线宽大于2).这些看起来像这样:http: //i.stack.imgur.com/ccQ1s.png

考虑到这一点,我已经推断使用Sprite-kit的SKShapeNode对我来说不是一个选项,除非有人知道如何解决上述问题.我已经研究了cocos2d,但是看起来有点矫枉过正(使用整个lib只是一个CCDrawNode).是否有SKShapeNode(和swift)的开源/公共扩展,这改善了绘图功能?要修复的最重要的是工件(节点中的白点/线).如果没有任何公开,Cocos2d是我的最佳选择吗?

cocos2d-iphone ios sprite-kit swift

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

Laravel Cashier + Stripe:没有这样的客户

我正在使用 Laravel Cashier 和 Stripe 开发 Web 应用程序的订阅。

我正在使用 Stripe v3 JavaScript API 并使用卡片元素生成 Stripe 令牌。Stripe 令牌正在生成,如果您在 Stripe 仪表板中查看,则会创建一个客户。此外,条带 ID 还保存在用户数据库中。但是,当我尝试使用以下代码为用户订阅计划时:

$user->newSubscription($planId, $planId)->create($stripeToken, [
            'email' => $user->email
]);
Run Code Online (Sandbox Code Playgroud)

它失败并显示错误:“没有这样的客户:cus_xxxxxx”。$planId 变量是 Stripe 中计划的 ID。

正如我所说,条带令牌已正确生成,客户已在 Stripe 仪表板中创建,并且条带 ID 已在数据库中设置。我对 Laravel Cashier 代码进行了一些深入研究,当它尝试更新卡信息时似乎出现了错误。更具体地说,它在此功能上失败:

public function asStripeCustomer()
Run Code Online (Sandbox Code Playgroud)

这是在计费模型中找到的。

我联系了 Stripe 支持人员,他们说在创建初始客户后,不会再向他们的 API 发出进一步的请求。

我的 laravel 版本是 5.5.34,我使用的是最新的 Cashier 版本。我已经尝试重新安装 Cashier,但仍然无法正常工作。我还刷新了我的缓存。

任何帮助是极大的赞赏。

php laravel stripe-payments laravel-5 laravel-cashier

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

在 Sprite Kit 中检测长触摸

我在 SKScene 中有一个节点,我根据用户的触摸来移动它。基本上,这个角色还应该尝试跟随用户的手指(假设手指在屏幕上)。我目前已经这样实现了,效果很好:

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    let touch = touches.first as! UITouch
    player.runAction(SKAction.moveTo(touch.locationInNode(self), duration: 1))
}

override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
    let touch = touches.first as! UITouch
    player.runAction(SKAction.moveTo(touch.locationInNode(self), duration: 1))
}

override func touchesCancelled(touches: Set<NSObject>!, withEvent event: UIEvent!) {
    player.removeAllActions()
}

override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
    player.removeAllActions()
}
Run Code Online (Sandbox Code Playgroud)

然而,问题是如果用户将手指放在手机上。TouchesBegan 仅被调用一次,即点击开始时,而不是按住时。我希望玩家角色不断地尝试到达手指。

我将相机集中在节点上,因此节点应该触摸手指的唯一时间是用户将手指放在节点上/节点内(即与节点相同的位置)。因此,在我运行 SKAction 来移动节点后,触摸无效,因为它位于旧位置。

我该怎么做?

ios sprite-kit swift

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