내 XNA 게임에 대한 사용자 지정 단추 클래스에서 작업하고 있습니다. 따라서 저는 C#으로 게임을 개발 중입니다.C#의 내 사용자 지정 단추 클래스의 상태에 따라 특성 덮어 쓰기를 제공하는 방법
내 단추 클래스는 매우 기본적이고 MouseOver, MouseOut, MouseDown 등의 필수 이벤트를 제공합니다. 또한 Text, TextAlign, BackgroundColor, TextColor 및 Font와 같은 전체 모양에 영향을주는 일부 공용 속성이 있습니다.
모든 단추는 정상, 호버, 눌린 및 비활성의 4 가지 상태가 될 수 있습니다. 내 게임 개발자에게 "상태 별"버튼의 모양을 제어 할 특정 "덮어 쓰기"를 지정할 수있는 기회를 제공하고 싶습니다.
저는 불행히도 멋진 해결책을 찾을 수 없습니다. 현재 모든 상태에 대해 별도의 Button 인스턴스를 보유 할 수있는 배열을 간단하게 작성합니다. 이제 사용자가 덮어 쓰기를 만들려면 Hovered-state를 말하면 버튼 배열의 해당 인덱스 위치에 새 Button 인스턴스를 만들면됩니다 (이 매핑에 대한 열거를 사용하여 바이트 값으로 캐스팅됩니다. 적절한 인덱스 위치를 검색). 이제 사용자는 가능한 모든 상태에 대해 덮어 쓰기를 정의 할 수 있습니다. < -> 속성 조합.
그리기 방법에서 마침내 현재 버튼의 현재 활성 상태가 무엇인지 확인하고 내 배열 컬렉션에서 적절한 버튼 인스턴스를 그립니다.
이것은 매우 깨끗한 해결책은 아닙니다. 단 하나의 상태에 대해 TextColor를 덮어 쓰고 싶을 때를 대비하여 많은 오버 헤드가 발생하기 때문입니다. 나는 이것이보다 전문적인 솔루션에서 어떻게 일반적으로 해결되는지 궁금해하고있었습니다.
누구나 해당 도메인에서 유용 할 수있는 디자인 패턴에 대한 몇 가지 팁이 있습니까? 의미있는 키워드가 누락되어 솔루션을 검색하는 데 문제가있었습니다.
확실히 오버 헤드가 줄어들지 만 네 가지 설정 인스턴스를 유지해야합니다. 모든 KeyValuePair가 덮어 쓰기를 나타낼 수있는 사전 컬렉션과 같은 것에 대해 생각해 보았습니다. 그러나 나는 그것을 정말 일반적으로 만들 수있는 어려움을 겪고 있습니다 ... 나는 더 많은 제안을 원하지만 귀하의 제안은 구현하기가 가장 쉽다고 생각합니다. – Daniel
당신의 솔루션 인 @ punker76을 가지고 조금 놀았습니다. 누락 된 기능은 속성 계층과 같습니다. 호버 및 활성 설정은 정상 상태의 하위 스타일입니다. 호버 설정에 의해 덮어 쓰기되지 않는 일반 설정 인스턴스의 속성이 변경되면이 설정도 변경되어야합니다. 이벤트 접근 방식을 사용하여 구현하려고 시도했지만, 어떤 속성이 덮어 쓰기인지 아닌지를 추적해야하기 때문에이 오류는 빠르게 추악하고 오류가 발생합니다. – Daniel
@Daniel 귀하의 새로운 질문에 뭔가를 바 꾸었습니다. – punker76