/asutil/style/Glitter.as

http://asutil.googlecode.com/ · ActionScript · 116 lines · 63 code · 13 blank · 40 comment · 8 complexity · 5db4a7b9066d3e25163bcd7f4e7e54fb MD5 · raw file

  1. package asutil.style
  2. {
  3. import asutil.construct.impl.Hashtable;
  4. import flash.display.DisplayObject;
  5. import mx.effects.Fade;
  6. import mx.effects.Sequence;
  7. /**
  8. * ????
  9. */
  10. public class Glitter
  11. {
  12. /**
  13. * ???
  14. */
  15. public function Glitter(argObject:Object)
  16. {
  17. glitterTable = new Hashtable;
  18. //??????? ???
  19. if(null == argObject.glitterEles){
  20. throw new Error("Invaild glitter elemsnts.");
  21. }
  22. this.glitterEles = argObject.glitterEles;
  23. //????????????????2??????
  24. if(null != argObject.interval){
  25. this.interval = argObject.interval;
  26. }
  27. initEffect();
  28. }
  29. /**
  30. * ????
  31. */
  32. public function play():void{
  33. var effSeq:Sequence = glitterTable.find(glitterEles) as Sequence;
  34. if( null == effSeq){
  35. //?????
  36. initEffect();
  37. //????
  38. effSeq = glitterTable.find(glitterEles) as Sequence;
  39. }
  40. /**
  41. * ?????play????
  42. * ???play???flex???????????????
  43. * targets???????????
  44. * ?resume????????????
  45. */
  46. effSeq.resume();
  47. }
  48. /**
  49. * ????
  50. */
  51. public function pause():void{
  52. var effSeq:Sequence = glitterTable.find(glitterEles) as Sequence;
  53. if( null != effSeq){
  54. effSeq.pause();
  55. //????alpha???1
  56. var eleArray:Array = effSeq.targets;
  57. eleArray.forEach(function(ele:DisplayObject,index:int,eleArray:Array):void{
  58. ele.alpha = 1;
  59. })
  60. }
  61. }
  62. /**
  63. * ??????????
  64. */
  65. public function stop():void{
  66. pause();
  67. glitterTable.remove(glitterEles);
  68. }
  69. /**
  70. * ???????????
  71. */
  72. private function initEffect():void{
  73. //?? ??
  74. var eff1:Fade = new Fade;
  75. eff1.duration = this.interval;
  76. eff1.alphaTo = 0
  77. //?? ??
  78. var eff2:Fade = new Fade;
  79. eff2.duration = this.interval;
  80. eff2.alphaTo=1
  81. var effSeq:Sequence = new Sequence;
  82. effSeq.addChild(eff1);
  83. effSeq.addChild(eff2);
  84. effSeq.repeatCount = 0;
  85. effSeq.targets = glitterEles;
  86. effSeq.play();
  87. effSeq.pause();
  88. glitterTable.add(this.glitterEles,effSeq);
  89. }
  90. /**
  91. * ?????????
  92. */
  93. private var glitterEles:Array;
  94. /**
  95. * ???????1?
  96. */
  97. private var interval:Number = 1000;
  98. /**
  99. * ???????????global??
  100. */
  101. private static var glitterTable:Hashtable;
  102. }
  103. }