1
20 * 20 타일로 만든 격자 기반지도를 만들려고하지만 타일을 통신하고 인접한 타일의 속성에 액세스하는 데 문제가 있습니다.Swift에서 배열의 참조 된 객체의 속성을 변경할 수 없습니다.
이 사용 된 코드는 이러한 목표를 달성하기 위해 노력하고있다 :
var tileArray:Array = []
class Tile:SKSpriteNode
{
var upperAdjacentTile:Tile?
override init()
{
let texture:SKTexture = SKTexture(imageNamed: "TempTile")
let size:CGSize = CGSizeMake(CGFloat(20), CGFloat(20))
super.init(texture: texture, color: nil, size: size)
}
required init(coder aDecoder: NSCoder)
{
fatalError("init(coder:) has not been implemented")
}
func setAdjacentTile(tile:Tile)
{
upperAdjacentTile = tile
}
}
for i in 0..<10
{
for j in 0..<10
{
let tile:Tile = Tile()
tile.position = CGPointMake(CGFloat(i) * 20, CGFloat(j) * 20)
tile.name = String(i) + String(j)
//checks if there is a Tile above it (aka previous item in array)
if(i+j != 0)
{
//The position of this tile in array minus one
tile.setAdjacentTile(tileArray[(j + (i * 10)) - 1] as Tile)
}
tileArray.append(tile)
}
}
println(tileArray[10].upperAdjacentTile) //Returns the previous item in tileArray
println(tileArray[9].position) //Returns the position values of same item as above
println(tileArray[10].upperAdjacentTile.position) //However, this doesn't work
왜 내가/액세스 할 수 없습니다 "upperAdjacentTile"에서 참조 타일의 속성을 변경?
오류 읽기 "를 타일 않습니다 Tile이 SKSpriteN의 하위 클래스 임에도 불구하고 'position'이라는 멤버가 없습니다. 송시. Codehints는 심지어 나를 '위치'로 자동 완성하므로, 나에게 의미가 없습니다. – user3368104
@ user3368104'var tileArray : Array = []'과 같이 배열의 타입을 명시 적으로 정의해야합니다. –
rintaro