首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKSpriteNode没有名为‘’的成员--如何访问在我的派生方法中声明的变量?

SKSpriteNode没有名为‘’的成员--如何访问在我的派生方法中声明的变量?
EN

Stack Overflow用户
提问于 2015-03-04 19:31:27
回答 1查看 428关注 0票数 0

我之前问了另外一个关于如何在Swift中访问全局变量的问题,但是我意识到全局变量对我的目的不起作用。一些背景:

这是一场数学/比赛的游戏。玩家将有一个等式,他们必须得到与之匹配的答案。

我有在屏幕上产卵的羊。每只羊拥有一个在我的spawnSheep方法中生成的唯一int值(1-12):

代码语言:javascript
复制
var sheepValue: Int = Int(arc4random_uniform(UInt32(12))+1)

多只羊会在屏幕上产卵,所以每个羊都需要自己的价值。在此之前,sheepValue的全局变量将将所有绵羊的值更新为最近生成的绵羊,从而否定了所有绵羊的任何形式的“唯一”数字。我把这些值转换成字符串,在每只羊身上都是可见的。

下面是我试图在函数之外访问sheepValue的代码片段:

代码语言:javascript
复制
 func checkCollisions() {
    var hitSheep: [SKSpriteNode] = []
    enumerateChildNodesWithName("sheep") { node, _ in
    let sheep = node as SKSpriteNode

    if CGRectIntersectsRect(sheep.frame, self.sandman.frame) {
    if sheep.sheepValue == self.equation {

        hitSheep.append(sheep)

        }

sheep.sheepValue得到一个错误:'SKSpriteNode没有成员名为"sheepValue“

但据我所知,我可以将属性设置为我的SKSpriteNode (绵羊),并以该语法访问它。但不是变量/ints?我不知道我做错了什么。

还有一些其他的想法--我可以使用字符串值来检查sheepValues吗?如果一只羊的sheepValue值为5,那么'5‘就会印在羊上和控制台上。保存这个字符串值,并执行我希望int var如何操作的操作。我正在考虑使用字符串值来检查sheepValue是否等于播放器的等式。但这将涉及到将更多的ints转换成更多的字符串,这需要更多的工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-04 20:14:17

我理解你的解释是错误的

代码语言:javascript
复制
import UIKit

class SKSpriteNode {
   var spriteTest:String = "SpriteKitTeste";
}

class Sheep: SKSpriteNode
{
   var sheepTest:String = "SheepTest";
}

let sheep = Sheep();
let someSprite:SKSpriteNode = sheep;

println(someSprite.sheepTest); //SKSpriteNode does not have a member named 'sheepTest';

超类SKSpriteNode无法从Sheep类访问属性或方法。

要解决这个问题非常简单,你需要先转换为类,或者如果你使用了斯威夫特,语言可以理解什么是正确的类型。

代码语言:javascript
复制
let someSheepSprite = sheep as Sheep;
println(someSheepSprite.sheepTest);

在您的代码中,我相信问题将是修复转换行。

代码语言:javascript
复制
func checkCollisions() {
var hitSheep: [SKSpriteNode] = []
enumerateChildNodesWithName("sheep") { node, _ in
let sheep = node as Sheep // <<<<<<< this line

if CGRectIntersectsRect(sheep.frame, self.sandman.frame) {
if sheep.sheepValue == self.equation {

    hitSheep.append(sheep)

    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28863229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档