/src/org/aswing/skinbuilder/ButtonStateObject.as

https://github.com/dsk23LAB/agalthemean
ActionScript | 179 lines | 143 code | 24 blank | 12 comment | 25 complexity | e4a881218afe2e730dd59a4e5b19cb57 MD5 | raw file
  1. /*
  2. Copyright aswing.org, see the LICENCE.txt.
  3. */
  4. package org.aswing.skinbuilder{
  5. import flash.display.Sprite;
  6. import flash.display.DisplayObject;
  7. import org.aswing.geom.IntRectangle;
  8. /**
  9. * A sprite that can view different child with different state set.
  10. * And scale by setSize().
  11. * @author iiley
  12. */
  13. public class ButtonStateObject extends Sprite{
  14. protected var defaultImage:DisplayObject;
  15. protected var pressedImage:DisplayObject;
  16. protected var pressedSelectedImage:DisplayObject;
  17. protected var disabledImage:DisplayObject;
  18. protected var selectedImage:DisplayObject;
  19. protected var disabledSelectedImage:DisplayObject;
  20. protected var rolloverImage:DisplayObject;
  21. protected var rolloverSelectedImage:DisplayObject;
  22. protected var defaultButtonImage:DisplayObject;
  23. protected var enabled:Boolean = true;
  24. protected var pressed:Boolean = false;
  25. protected var selected:Boolean = false;
  26. protected var rollovered:Boolean = false;
  27. protected var defaultButton:Boolean = false;
  28. protected var lastViewedImage:DisplayObject;
  29. public function ButtonStateObject(){
  30. super();
  31. name = "ButtonStateObject";
  32. mouseEnabled = false;
  33. tabEnabled = false;
  34. }
  35. /**
  36. * update the right image to view.
  37. * @param r the bounds, null if not need to change the bounds of assets
  38. */
  39. public function updateRepresent(r:IntRectangle=null):void{
  40. var image:DisplayObject = defaultImage;
  41. var tmpImage:DisplayObject;
  42. if(!enabled){
  43. if(selected && disabledSelectedImage){
  44. tmpImage = disabledSelectedImage;
  45. }else{
  46. tmpImage = disabledImage;
  47. }
  48. }else if(pressed){
  49. if(selected && pressedSelectedImage){
  50. tmpImage = pressedSelectedImage;
  51. }else{
  52. tmpImage = pressedImage;
  53. }
  54. }else if(rollovered){
  55. if(selected && rolloverSelectedImage){
  56. tmpImage = rolloverSelectedImage;
  57. }else{
  58. tmpImage = rolloverImage;
  59. }
  60. }else if(selected){
  61. tmpImage = selectedImage;
  62. }else if(defaultButton){
  63. tmpImage = defaultButtonImage;
  64. }
  65. if(tmpImage != null){
  66. image = tmpImage;
  67. }
  68. if(image != lastViewedImage){
  69. if(lastViewedImage) lastViewedImage.visible = false;
  70. if(image) image.visible = true;
  71. lastViewedImage = image;
  72. }
  73. if(r != null){
  74. if(image){
  75. image.width = r.width;
  76. image.height = r.height;
  77. }
  78. this.x = r.x;
  79. this.y = r.y;
  80. }
  81. }
  82. public function setEnabled(b:Boolean):void{
  83. this.enabled = b;
  84. }
  85. public function setPressed(b:Boolean):void{
  86. this.pressed = b;
  87. }
  88. public function setSelected(b:Boolean):void{
  89. this.selected = b;
  90. }
  91. public function setRollovered(b:Boolean):void{
  92. this.rollovered = b;
  93. }
  94. public function setDefaultButton(b:Boolean):void{
  95. this.defaultButton = b;
  96. }
  97. protected function checkAsset(image:DisplayObject):void{
  98. if(image != null && contains(image)){
  99. throw new Error("You are set a already exists asset!");
  100. }
  101. }
  102. override public function addChild(child:DisplayObject):DisplayObject{
  103. if(child != null){
  104. child.visible = false;
  105. return super.addChild(child);
  106. }
  107. return null;
  108. }
  109. public function setDefaultButtonImage(image:DisplayObject):void{
  110. checkAsset(defaultButtonImage);
  111. defaultButtonImage = image;
  112. addChild(image);
  113. }
  114. public function setDefaultImage(image:DisplayObject):void{
  115. checkAsset(defaultImage);
  116. defaultImage = image;
  117. addChild(image);
  118. }
  119. public function setPressedImage(image:DisplayObject):void{
  120. checkAsset(pressedImage);
  121. pressedImage = image;
  122. addChild(image);
  123. }
  124. public function setPressedSelectedImage(image:DisplayObject):void{
  125. checkAsset(pressedSelectedImage);
  126. pressedSelectedImage = image;
  127. addChild(image);
  128. }
  129. public function setDisabledImage(image:DisplayObject):void{
  130. checkAsset(disabledImage);
  131. disabledImage = image;
  132. addChild(image);
  133. }
  134. public function setSelectedImage(image:DisplayObject):void{
  135. checkAsset(selectedImage);
  136. selectedImage = image;
  137. addChild(image);
  138. }
  139. public function setDisabledSelectedImage(image:DisplayObject):void{
  140. checkAsset(disabledSelectedImage);
  141. disabledSelectedImage = image;
  142. addChild(image);
  143. }
  144. public function setRolloverImage(image:DisplayObject):void{
  145. checkAsset(rolloverImage);
  146. rolloverImage = image;
  147. addChild(image);
  148. }
  149. public function setRolloverSelectedImage(image:DisplayObject):void{
  150. checkAsset(rolloverSelectedImage);
  151. rolloverSelectedImage = image;
  152. addChild(image);
  153. }
  154. }
  155. }