質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

1回答

1857閲覧

画像が表示されない、白く塗りつぶされてしまう

terrat

総合スコア14

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2015/10/12 15:17

一番下に記しましたcsvに13で指定されている画像が、2行目以降白く塗りつぶされ、表示されません。一行目の13の画像は表示されています。
本を見ながら何度もやり直しているのですが、どうしても13の画像が一行目を除き表示されません。

どこが間違っているのか検討もつきません。
何がいけないのでしょうか?
###ソースコード(GameScene.swift)

import SpriteKit class GameScene: SKScene { // すべてのタイルを保持する配列 var tileMap = [Tile]() // 花のタイルを保持する辞書 var flowerMap = [Int: SKSpriteNode]() // タイルの表示上のサイズ var tileSize = CGSize(width: 10.0, height: 10.0) // マップの横方向のタイル数 var mapWidth = 0 // マップの縦方向のタイル数 var mapHeight = 0 override func didMoveToView(view: SKView) { self.setup() } override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { } override func update(currentTime: CFTimeInterval) { } func getTilePositionByIndex(index:Int) -> TilePosition { return TilePosition(x: index % self.mapWidth, y: index / self.mapWidth) } // タイルの位置からシーン上での位置を返すメソッド func getPointByTilePosition(position:TilePosition) -> CGPoint { let x = CGFloat(position.x + 1) * self.tileSize.width let y = self.frame.size.height - CGFloat(position.y + 1) * self.tileSize.height return CGPoint(x: x, y: y) } // マップデータを読み込むメソッド func loadMapData(fileName:String) { let error = NSErrorPointer() // ファイルをUTF-8エンコードの文字列として読み込む let fileString: String? do { fileString = try String(contentsOfFile: fileName, encoding: NSUTF8StringEncoding) } catch let error1 as NSError { error.memory = error1 fileString = nil } // 改行で区切って配列にする let lineList = fileString!.componentsSeparatedByString("\n") // 配列の要素数(CSVファイルの行数)を縦方向のタイル数として保持 self.mapHeight = lineList.count // 配列のインデックス var index = 0 // 行ごとに処理を行う for line in lineList { // カンマで要素を分割する let tileStringList = line.componentsSeparatedByString(",") if self.mapWidth == 0 { // 配列の要素数を横方向のタイル数として保持 self.mapWidth = tileStringList.count // タイルの幅を求める let tileWidth = Double(self.frame.width) * 0.9 / Double(self.mapWidth) // タイルの大きさを控える self.tileSize = CGSize(width: tileWidth, height: tileWidth) } // 行中の要素ごとに処理を行う for tileString in tileStringList { // 文字列をInt型に変換する let value = Int(tileString) // Int型の値をTileType型に変換する if let type = TileType(rawValue: value!) { // インデックスからタイルの位置を求める let position = self.getTilePositionByIndex(index) // タイルを作成して配列に納める let tile = Tile(imageNamed: tileString) tile.position = self.getPointByTilePosition(position) tile.size = self.tileSize tile.type = type self.tileMap.append(tile) // タイルが花を置く条件にあてはまる場合 if type == .Road1 || type == .Road2 { // 花のスプライトを作成して配列に納める let flowerSprite = SKSpriteNode(imageNamed: "flower") flowerSprite.size = tile.size flowerSprite.position = tile.position flowerSprite.anchorPoint = tile.anchorPoint self.flowerMap[index] = flowerSprite } } index++ } } } // マップを描画するメソッド func drawMap() { // CSVファイルのパスを求める if let fileName = NSBundle.mainBundle().pathForResource("map", ofType: "csv") { // マップを読み込む self.loadMapData(fileName) } // タイルのスプライトをシーンに貼り付ける for tile in self.tileMap { self.addChild(tile) } // 花のスプライトをシーンに貼り付ける for (index, flowerSprite) in self.flowerMap { self.addChild(flowerSprite) } } // ゲームの初期化処理を行うメソッド func setup() { // 背景画像のスプライトを貼り付ける let backgroundSprite = SKSpriteNode(imageNamed: "background") backgroundSprite.size = self.size backgroundSprite.position = CGPoint(x: self.size.width * 0.5, y: self.size.height * 0.5) self.addChild(backgroundSprite) // マップを描画する self.drawMap() } }

###ソースコード(Tile.swift)

import Foundation import SpriteKit // タイルの種類を表す列挙型 enum TileType: Int { case None // 通ることが出来る道 case Road1, Road2, Road3, Road4, Road5, Road6, Road7, Road8, Road9, Road10, Road11 // 障害物の木 case Tree1, Tree2, Tree3 // キャラクターが移動できる種類のタイルかどうかを返すメソッド func canMove() -> Bool { return (self != .None && self != .Tree1 && self != .Tree2 && self != .Tree3) } } class Tile: SKSpriteNode { var type = TileType.None } // キャラクターが動く方向を表す列挙型 enum Direction { case None, Up, Down, Left, Right // 逆方向のDirectionを返却するメソッド func reverseDirection() -> Direction { switch self { case .None: return .None case .Up: return .Down case .Down: return .Up case .Left: return .Right case .Right: return .Left } } } struct TilePosition { var x, y: Int // directionの方向に移動したときの位置を返すメソッド func movedPosition(direction:Direction) -> TilePosition { switch direction { case .Up: return TilePosition(x: x, y: y-1) case .Down: return TilePosition(x: x, y: y+1) case .Left: return TilePosition(x: x-1, y: y) case .Right: return TilePosition(x: x+1, y: y) case .None: return TilePosition(x: x, y: y) } } // 他のTilePositionと同じ位置かどうかを返すメソッド func isEqual(other:TilePosition) -> Bool { return self.x == other.x && self.y == other.y } }

###ソースコード(map.csv)

3,1,1,1,1,1,7,1,1,1,4 2,12,13,12,12,14,2,12,12,12,2 10,1,4,13,3,1,8,12,12,12,2 2,12,6,1,5,13,10,1,1,1,8 2,12,12,12,12,12,2,12,12,13,2 6,1,1,1,1,1,9,1,1,1,5

###補足情報(言語/FW/ツール等のバージョンなど)
Xcode7, swift

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

このコードはどこにあったものですか?

「本を見ながら」とあるので、技術書籍でしょうか。
具体的な本のタイトルやソースコードへのリンクなど載せてみると、回答しやすいと思います。

投稿2015/10/13 09:23

jumilla

総合スコア72

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問