UECheckBox.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using CommonLang.Xml;
  2. using CommonUnity3D.UGUI;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Xml;
  8. using UnityEngine;
  9. using CommonUI.Data;
  10. using TextAnchor = CommonUI.Data.TextAnchor;
  11. using FontStyle = CommonUI.Data.FontStyle;
  12. namespace CommonUnity3D.UGUIEditor.UI
  13. {
  14. public class UECheckBox : UETextComponent
  15. {
  16. protected bool mIsChecked;
  17. protected UGUI.ImageSprite mImageUnchecked;
  18. protected UGUI.ImageSprite mImageChecked;
  19. protected Vector2 mImageTextOffset = new Vector2();
  20. protected ImageAnchor mImageTextAnchor = ImageAnchor.C_C;
  21. public UECheckBox(bool use_bitmap) : base(use_bitmap)
  22. {
  23. base.Enable = true;
  24. base.EnableChildren = false;
  25. base.IsInteractive = true;
  26. this.PointerClick += EventHandler_PointerClick;
  27. }
  28. public UECheckBox() : this(UIEditor.GlobalUseBitmapText)
  29. {
  30. }
  31. private void EventHandler_PointerClick(DisplayNode sender, UnityEngine.EventSystems.PointerEventData e)
  32. {
  33. this.mIsChecked = !mIsChecked;
  34. }
  35. //----------------------------------------------------------------------------------------------
  36. public virtual bool IsChecked
  37. {
  38. get { return mIsChecked; }
  39. set { this.mIsChecked = value; }
  40. }
  41. //----------------------------------------------------------------------------------------------
  42. public ImageAnchor ImageTextAnchor
  43. {
  44. get { return mImageTextAnchor; }
  45. set { this.mImageTextAnchor = value; }
  46. }
  47. public Vector2 ImageTextOffset
  48. {
  49. get { return mImageTextOffset; }
  50. set { this.mImageTextOffset = value; }
  51. }
  52. //----------------------------------------------------------------------------------------------
  53. protected override void OnStart()
  54. {
  55. if (mTextSprite == null)
  56. {
  57. if (mUseBitmapFont)
  58. {
  59. mTextSprite = new BitmapTextSprite("bitmap_text");
  60. }
  61. else
  62. {
  63. mTextSprite = new TextSprite("bitmap_text");
  64. }
  65. }
  66. base.OnStart();
  67. }
  68. protected override void OnUpdateLayout()
  69. {
  70. base.OnUpdateLayout();
  71. if (IsChecked)
  72. {
  73. if (mImageChecked != null)
  74. {
  75. mImageChecked.Visible = true;
  76. UIUtils.AdjustAnchor(mImageTextAnchor, this, mImageChecked, mImageTextOffset);
  77. }
  78. if (mImageUnchecked != null)
  79. {
  80. mImageUnchecked.Visible = false;
  81. }
  82. }
  83. else
  84. {
  85. if (mImageUnchecked != null)
  86. {
  87. mImageUnchecked.Visible = true;
  88. UIUtils.AdjustAnchor(mImageTextAnchor, this, mImageUnchecked, mImageTextOffset);
  89. }
  90. if (mImageChecked != null)
  91. {
  92. mImageChecked.Visible = false;
  93. }
  94. }
  95. }
  96. protected override void DecodeFields(UIEditor.Decoder editor, UIComponentMeta e)
  97. {
  98. base.DecodeFields(editor, e as UECheckBoxMeta);
  99. this.Decode_ImageText(editor, e as UECheckBoxMeta);
  100. this.mIsChecked = (e as UECheckBoxMeta).is_checked;
  101. }
  102. protected override void DecodeEnd(UIEditor.Decoder editor, UIComponentMeta e)
  103. {
  104. base.DecodeEnd(editor, e);
  105. this.EnableChildren = false;
  106. this.Enable = true;
  107. }
  108. private void Decode_ImageText(UIEditor.Decoder editor, UECheckBoxMeta e)
  109. {
  110. if (!string.IsNullOrEmpty(e.imageAtlasUnchecked))
  111. {
  112. this.mImageUnchecked = editor.editor.ParseImageSpriteFromAtlas(e.imageAtlasUnchecked, Vector2.zero);
  113. if (mImageUnchecked != null)
  114. {
  115. this.AddChild(mImageUnchecked);
  116. }
  117. }
  118. else if (!string.IsNullOrEmpty(e.imagePathUnchecked))
  119. {
  120. this.mImageUnchecked = editor.editor.ParseImageSpriteFromImage(e.imagePathUnchecked, Vector2.zero);
  121. if (mImageUnchecked != null)
  122. {
  123. this.AddChild(mImageUnchecked);
  124. }
  125. }
  126. if (!string.IsNullOrEmpty(e.imageAtlasChecked))
  127. {
  128. this.mImageChecked = editor.editor.ParseImageSpriteFromAtlas(e.imageAtlasChecked, Vector2.zero);
  129. if (mImageChecked != null)
  130. {
  131. this.AddChild(mImageChecked);
  132. }
  133. }
  134. else if (!string.IsNullOrEmpty(e.imagePathChecked))
  135. {
  136. this.mImageChecked = editor.editor.ParseImageSpriteFromImage(e.imagePathChecked, Vector2.zero);
  137. if (mImageChecked != null)
  138. {
  139. this.AddChild(mImageChecked);
  140. }
  141. }
  142. this.mImageTextAnchor = e.imageAnchor;
  143. this.mImageTextOffset.x = e.imageOffsetX;
  144. this.mImageTextOffset.y = e.imageOffsetY;
  145. }
  146. }
  147. }