home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 November / CDVD1105.ISO / Util / Winamp / Skins / Anime_Shogo.wal / scripts / seekscrpt.m < prev    next >
Text File  |  2004-08-09  |  2KB  |  99 lines

  1. //-----------------------------------------------------------------------------
  2. // seekbyregion.m
  3. //
  4. // Example of an Animated Seekbar using Regions
  5. // (Improved, no longer requires HiddenSeek)
  6. //
  7. // written by FrisbeeMonkey
  8. //-----------------------------------------------------------------------------
  9.  
  10. #include </lib/std.mi>
  11.  
  12. Function setSeekAnim(int posValue);
  13. Function updateSeek(int x, int y);
  14.  
  15. Global Layer Seek;
  16. Global Map SeekMap;
  17. Global Timer SeekTimer;
  18. Global Boolean SeekChanging;
  19.  
  20. System.onScriptLoaded() {
  21.     Group SeekGrp = getScriptGroup();
  22.  
  23.     Seek = SeekGrp.findObject("Seek");
  24.  
  25.     SeekTimer = new Timer;
  26.     SeekTimer.setDelay(1000);
  27.  
  28.     SeekMap = new Map;
  29.     SeekMap.loadMap("shogo.seek.map");
  30.  
  31.     if (getStatus()==0) {
  32.         setSeekAnim(0);
  33.     } else {
  34.         SeekTimer.start();
  35.         setSeekAnim(255 * System.getPosition() / System.getPlayItemLength());
  36.     }
  37. }
  38.  
  39. System.onPlay() {
  40.     SeekTimer.start();
  41. }
  42.  
  43. System.onStop() {
  44.     SeekTimer.stop();
  45.     setSeekAnim(0);
  46. }
  47.  
  48. SeekTimer.onTimer() {
  49.     setSeekAnim(255 * System.getPosition() / System.getPlayItemLength());
  50. }
  51.  
  52. setSeekAnim(int Value) {
  53.     Region r = new Region;
  54.     r.loadFromMap(SeekMap, Value, 1);
  55.     Seek.setRegion(r);
  56.     delete r;
  57. }
  58.  
  59. Seek.onLeftButtonDown(int x, int y) {
  60.     SeekTimer.stop();
  61.     SeekChanging = 1;
  62.     updateSeek(x, y);
  63. }
  64.  
  65. Seek.onLeftButtonUp(int x, int y) {
  66.     SeekTimer.start();
  67.     if (SeekChanging) {
  68.         SeekChanging = 0;
  69.         updateSeek(x, y);
  70.     }
  71. }
  72.  
  73. Seek.onLeaveArea() {
  74.     SeekTimer.start();
  75.     if (SeekChanging) SeekChanging = 0;
  76. }
  77.  
  78. Seek.onMouseMove(int x, int y) {
  79.     if (SeekChanging) {
  80.         updateSeek(x, y);
  81.     }
  82. }
  83.  
  84. updateSeek(int x, int y) {
  85.     int newValue = SeekMap.getValue(x - Seek.getLeft(), y - Seek.getTop());
  86.     if (System.getPlayItemLength() >= 0) {
  87.         int p = (newValue * 100) / 255;
  88.         int s = (newValue * System.getPlayItemLength()) / 255;
  89.         if (!SeekChanging) {
  90.             System.seekTo(s);
  91.         }
  92.         setSeekAnim(255 * s / System.getPlayItemLength());
  93.     }
  94. }
  95.  
  96. System.onScriptUnloading() {
  97.     delete SeekTimer;
  98.     delete SeekMap;
  99. }