小编Ale*_*ano的帖子

什么是正确的方法,使用"init"或"didmove"?

语言:Swift 3.0 --- IDE:Xcode 8.0 beta 2 ---项目:iOS游戏(SpriteKit)

我为iOS创建了一款游戏,我知道Apple对接受应用/游戏的规则非常严格.所以我想知道哪种是正确的游戏设置方式.

我从谷歌学到了创建一个新的SpriteKit项目并执行以下设置:

GameViewController.swift中清除viewDidLoad()并添加所有这些:

override func viewDidLoad() {
    super.viewDidLoad()
    let skView = self.view as! SKView

    let scene = GameScene(size: skView.bounds.size)
    scene.scaleMode = .aspectFit

    skView.presentScene(scene)
}
Run Code Online (Sandbox Code Playgroud)

GameScene.swift中删除所有内容并保留此代码:

import SpriteKit

class GameScene: SKScene {
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override init(size: CGSize) {
        super.init(size: size)
        // add all the code of the game here...
    }

}
Run Code Online (Sandbox Code Playgroud)

并在override init中开发我的游戏

但我认为用init启动游戏实际上是错误的.而正确的方法是使用didMove()方法.那么代码应该写在这里吗?:

override func didMove(to view: SKView) {
    <#code#>
}
Run Code Online (Sandbox Code Playgroud)

有谁知道哪一个是正确的方法?为什么?如果我的方式错了,你能解释一下如何使用didMove方法吗? …

objective-c ios sprite-kit swift swift3

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

在SpriteKit中使用CCBlinkTo

如何在Sprite-Kit中实现类似CCBlink的操作?我希望2闪烁10次.

id blink = [CCBlink actionWithDuration:2.0f blinks:10];
id calBck = [CCCallBlock actionWithBlock:^{
           [enemy expired];
    }];
[HeroSprite runAction:[CCSequence actions:blink, calBck, nil]];
Run Code Online (Sandbox Code Playgroud)

objective-c sprite-kit swift

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

SpriteKit和Swift中的setSpcale和SKSpriteNodes的大小有什么区别?

我试图SKSpriteNode从PNG图像设置a的大小(好吧,只需:

test = SKSpriteNode(imageNamed: "myImage")
Run Code Online (Sandbox Code Playgroud)

但是当谈到调整大小时,我不确定我是否应该使用test.setScaletest.size.有什么区别,什么时候应该使用它们?

ios sprite-kit skspritenode swift

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

在SpriteKit SWIFT中获取SKReferenceNode的子节点

我在一个SKSpriteNode(名称:square)和一个SKLabel(name:label)中创建了一个场景Case.sks(使用Level Editor).在我的主场景GameScene.sks中,我使用带有"Case"的SKReferenceNode作为参考.

我需要从我的主场景中访问"方形"精灵.

我的第一个想法是直接调用子节点:

 let firstSquare = childNode(withName: "square") as! SKSpriteNode
Run Code Online (Sandbox Code Playgroud)

但我得到了:

 Fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)

所以我尝试过:

 let caseRef = childNode(withName: "Case") as! SKReferenceNode
 let firstSquare = caseRef.childNode(withName: "square") as! SKSpriteNode
Run Code Online (Sandbox Code Playgroud)

但我得到了第一个广场线:

 Fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)

如何获取参考场景的子节点?

sprite-kit skspritenode swift skreferencenode xcode8-beta2

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

HitSpest for SKSpriteNode

这是我的问题:

我使用SpriteKit,我想在某个矩形中发生忽略触摸事件(阻止调用touchesBegan).我想如何做到这一点的方式是一样的东西"重写hitTestWithEventUIView".但我找不到任何类似的方法SKSpriteNode可以忽略事件并阻止调用touchesBegan.

当然

  • 我可以设置isUserInteractionEnabled为false但它会禁用整个精灵而不仅仅是一部分.
  • 我可以检查touchesBegan方法中的触摸位置,但这是迟到的 - 在同一位置下面的其他精灵将不再接收此事件.
  • 我也尝试使用SKCropNode,但它只是阻止显示精灵,甚至在不可见区域处理事件.

有没有人知道如何防止部分精灵处理事件?

hittest ios sprite-kit skspritenode

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

AVAudioPlayer产生滞后播放音效

我正在使用SKTAudioRay Wenderlich在他的Github上提供的库.这是我为播放声音效果而修改的代码,我每次播放时都会调用它:

public func playSoundEffect(_ filename: String) {
    let url = Bundle.main.url(forResource: filename, withExtension: nil)
    if (url == nil) {
        print("Could not find file: \(filename)")
        return
    }
    if !UserDefaults.standard.bool(forKey: "soundOff"){
    var error: NSError? = nil
    do {
        soundEffectPlayer = try AVAudioPlayer(contentsOf: url!)
    } catch let error1 as NSError {
        error = error1
        soundEffectPlayer = nil
    }
    if let player = soundEffectPlayer {
        DispatchQueue.global(qos: .background).async {
            player.numberOfLoops = 0
            player.prepareToPlay()
            player.play()
        }
    } else {
        print("Could not create audio …
Run Code Online (Sandbox Code Playgroud)

xcode avaudioplayer ios sprite-kit swift

5
推荐指数
0
解决办法
661
查看次数

如何在Swift中以编程方式将HeaderView从nib添加到UiTableView

我是一个天真的IOS开发人员使用swift语言.

我有一个表格视图,显示酒店的功能列表.现在我想在tableView上添加一个标题信息与酒店图片,酒店名称在tableview上方,以便标题信息也与tableview内容一起滚动(产品功能列表) )

这是问题,TableView与功能列表工作正常.

class HotelDetailViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {

    @IBOutlet weak var categoriesTableView: UITableView!

    var items: [(String, String,String)] = [
        ("Service", "   Courteous service, Good staff , Good staff","   Bad Facility"),
        ("Vibe",  "   Courteous service, Good staff","   Bad Facility"),
        ("Hotel",  "   Courteous service, Good staff","   Bad Facility"),
        ("Room Facility",  "   Courteous service, Good staff","   Bad Facility"),
        ("Amenities",  "   Courteous service, Good staff","   Bad Facility"),
        ("Food", "   Courteous service, Good staff","   Bad Facility")
    ]


    override func viewDidLoad() {
        super.viewDidLoad()
        let nib = …
Run Code Online (Sandbox Code Playgroud)

uitableview uiscrollview ios swift

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

在 Swift 中合并两个不同的图像

我想UIImage在 Swift 中合并两个:

在此处输入图片说明

在此处输入图片说明

我试过了

func maskImage(image: UIImage, withMask maskImage: UIImage) -> UIImage {

    let maskRef = maskImage.CGImage

    let mask = CGImageMaskCreate(
        CGImageGetWidth(maskRef),
        CGImageGetHeight(maskRef),
        CGImageGetBitsPerComponent(maskRef),
        CGImageGetBitsPerPixel(maskRef),
        CGImageGetBytesPerRow(maskRef),
        CGImageGetDataProvider(maskRef),
        nil,
        false)

    let masked = CGImageCreateWithMask(image.CGImage, mask)
    let maskedImage = UIImage(CGImage: masked!)

    // No need to release. Core Foundation objects are automatically memory managed.

    return maskedImage

}
Run Code Online (Sandbox Code Playgroud)

和电话

    let imageName = data.valueForKey("imagename")!.description
    let image = UIImage(named: imageName)
    let imageBackground : UIImage = UIImage(named:"background")!    
    let maskedImage: UIImage = self.maskImage(image!, withMask: imageBackground) …
Run Code Online (Sandbox Code Playgroud)

merge uiimage ios swift

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

SpriteKit/SKScene:如何从左上角而不是从左下角绘制?

我们知道SKScene的原点在左下角。

但是我尝试从一个包含 0 和 1 矩阵的文件中进行简单的级别加载。虽然 0 什么都不是,但 1 表示一堵墙(简单的矩形)。

由于文件的内容显然是从左上角到右下角,我想从场景的左上角绘制。

但是我的第一个角色是在场景的左下角绘制的。我尝试将场景的yScale设置为 -1,希望它反转 y 轴,但这不起作用

什么是最干净的方式,所以SKScene我总是从左上角开始绘制?我仍然想保持我anchorPoint的 0.5、0.5。

所以从左上角绘制将位于x=-widthOfScreen/2y=heightOfScreen/2

ios sprite-kit skscene swift

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

在应用程序的所有视图控制器上显示选项卡栏

我有一个问题,我在标签栏控制器上有2个视图控制器.这两个控制器都显示标签.但是当我从View控制器1到View控制器3进行推送时,视图控制器3没有显示标签栏.

我想在我的应用程序的所有控制器上显示选项卡. 我的情况

iphone objective-c ios swift ios8

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

阴影不出现在UIImageView(Swift)下

我编写了以下代码来下载并在tableView的单元格中显示图像.然而,投影根本没有出现,我无法弄清楚出了什么问题.

cell.societyImage.setIndicatorStyle(UIActivityIndicatorViewStyle.White)
cell.societyImage.setShowActivityIndicatorView(true)
cell.societyImage.sd_setImageWithURL(NSURL(string: pictureURLs[objectIds[indexPath.row]]!),completed: { (image, error, cache, url) in                
     cell.societyImage.layer.shadowColor = UIColor(white: 0.7, alpha: 0.7).CGColor
     cell.societyImage.layer.shadowOffset = CGSizeMake(3, 3)
     cell.societyImage.layer.shadowOpacity = 0.4
     cell.societyImage.layer.masksToBounds = true
})
Run Code Online (Sandbox Code Playgroud)

任何帮助深表感谢!

shadow uiimageview ios swift

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