2012-10-15 10 views
-2

Windows Phone 용 C# 및 XNA에 문제가 있습니다. XNA의 Game1 클래스 안에있는 Item이라는 클래스를 만들었습니다. 내가 겪고있는 문제는 내가 그 (것)들에 변화를 줄 수없는 품목 전부를 창조하고 난 후에, 그것은 과실을 던지지 않으며 또한 변화가 효력을 나타내지 않는다이다. 그래서 코드는 이런 식입니다 : 변수를 변경할 수 없습니다 왜 내가 또한 클래스 내부 접근 방법을 통해이 일을 시도 한 이해가 안클래스의 멤버를 변경할 수 없습니다.

public class Game1 : Microsoft.Xna.Framework.Game { 
    Item Loading; 
    Item[] Stuff = new Item[2]; 

    public class Item { 
    public bool visible = true; 
    } 

    protected override void LoadContent() { 
    Loading = new Item(); 
    Stuff[1] = new Item(); 
    } 

    protected override void Update(GameTime gameTime) { 
    Loading.visible = false; 
    System.Diagnostics.Debug.WriteLine(Loading.visible); //prints true 
    Stuff[1].visible = false; 
    System.Diagnostics.Debug.WriteLine(Stuff[1].visible); //prints false 
    } 
} 

. 나는 기본적으로 Item 배열을 위해 코드를 복제했다. 그래서 나는 완전히 엉망이되었다.

+0

'Item' 클래스에 접근 자 메소드를 표시 할 수 있습니까? – paul

+0

"변수"는 무엇을 의미합니까? OOP에서 우리는 "변수"라는 용어를 피하고 클래스에 속한 것을 참조하는 "멤버"라고하며 일부 Memebr 유형은 메서드 (함수) 및 속성입니다. 기본적으로 멤버는 클래스에 대해 비공개이므로 Yo는 클래스 외부의 "로드 중"및 "항목"에 액세스 할 수 없습니다. Loading 및 Stuff에서 값을 가져 오려면 공개 (잘못된 접근) 또는 공개 (읽기 전용 일 수 있음) 속성 (접근 자일 수 있음)을 멤버에게 선언해야합니다. –

+0

@ Y.Ecarri'Update' 메소드는'Game1' 클래스의 일부이므로 private 멤버 인'Loading'과'Stuff []'에 접근 할 수 있습니다. 그것은 여기서 문제가되지 않습니다. –

답변

0

이 코드는 작동합니다. 상속 제약 조건을 제거했지만 그것 역시 함께 작동해야합니다. 내가 본 주요 쟁점은 당신이 "물건"이라고 선언 한 방식입니다. 어떤 버전의 C#을 사용하고 있는지 모르겠지만 (VS2010) 배열을 C/C++에서와 같이 선언 할 수는 없습니다. 배열은 new 키워드로 초기화해야합니다.

public class Game1 
{ 
    Item Loading; 
    Item[] Stuff; 

    public class Item 
    { 
     public bool visible = true; 
    } 

    public void LoadContent() 
    { 
     Loading = new Item(); 
     Stuff = new Item[2]; 
     Stuff[1] = new Item(); 
    } 

    public void Update(DateTime gameTime) 
    { 
     Loading.visible = false; 
     System.Diagnostics.Debug.WriteLine(Loading.visible); //prints false 

     Stuff[1].visible = false; 
     System.Diagnostics.Debug.WriteLine(Stuff[1].visible); //prints false 
    } 
} 
+0

입력 해 주셔서 감사합니다. 나는 나의 코드를 잘못 입력했다. 그것은 축 어적 인 복사본이 아니었다. 나는 마침내 오류를 알아 냈다. 그것은 '나'오류였다 : - 나는 두 개의 경쟁하는 부울 스위치를 가지고 있었고 앞뒤로 뒤집혀 있다는 것을 눈치 채지 못했다. – scape

관련 문제