home *** CD-ROM | disk | FTP | other *** search
/ GameStar 1998 November (Bonus) / GAMESTAR11B.ISO / ENCYC99 / MM / T065518A.DCR / 00017_ButtonMaker.ls < prev    next >
Encoding:
Text File  |  1998-06-18  |  2.9 KB  |  143 lines

  1. property buttonChannel, buttonType, buttonLoc, onPict, upPict, downPict, offPict, buttonState, buttonAction, oldPict, tracker, stayDown
  2.  
  3. on new me, bType, bState, bChannel, trak
  4.   set buttonChannel to bChannel
  5.   set buttonState to bState
  6.   set tracker to trak
  7.   setButtonType(me, bType)
  8.   swapImage(me)
  9.   return me
  10. end
  11.  
  12. on swapImage me
  13.   if not stayDown then
  14.     case buttonState of
  15.       #on:
  16.         set the member of sprite buttonChannel to onPict
  17.       #up:
  18.         set the member of sprite buttonChannel to upPict
  19.       #down:
  20.         set the member of sprite buttonChannel to downPict
  21.       #off:
  22.         set the member of sprite buttonChannel to offPict
  23.     end case
  24.   else
  25.     case buttonState of
  26.       #on:
  27.         set the member of sprite buttonChannel to downPict
  28.       #up:
  29.         set the member of sprite buttonChannel to downPict
  30.       #down:
  31.         set the member of sprite buttonChannel to downPict
  32.       #off:
  33.         set the member of sprite buttonChannel to offPict
  34.     end case
  35.   end if
  36. end
  37.  
  38. on reset me
  39.   updateStage()
  40. end
  41.  
  42. on buttonActive me
  43.   set oldState to buttonState
  44.   if rollOver(buttonChannel) then
  45.     if the stillDown then
  46.       case buttonState of
  47.         #on:
  48.           set buttonState to #down
  49.         #up:
  50.           set buttonState to #down
  51.           mouseDownIt(buttonAction)
  52.         #down:
  53.           set buttonState to #down
  54.           mousePressed(buttonAction)
  55.         #off:
  56.           set buttonState to #off
  57.       end case
  58.     else
  59.       case buttonState of
  60.         #on:
  61.           set buttonState to #up
  62.         #up:
  63.           set buttonState to #up
  64.         #down:
  65.           set buttonState to #up
  66.           mouseReleased(buttonAction)
  67.         #off:
  68.           set buttonState to #off
  69.       end case
  70.     end if
  71.   else
  72.     if (buttonState <> #off) and (buttonState <> #stayDown) then
  73.       set buttonState to #on
  74.       if the stillDown = 0 then
  75.         deactivate(tracker, me)
  76.       end if
  77.     else
  78.       deactivate(tracker, me)
  79.     end if
  80.   end if
  81.   if buttonState <> oldState then
  82.     swapImage(me)
  83.     updateStage()
  84.   end if
  85. end
  86.  
  87. on getChannel me
  88.   return buttonChannel
  89. end
  90.  
  91. on setButtonState me, bState
  92.   set buttonState to bState
  93.   swapImage(me)
  94. end
  95.  
  96. on getButtonState me
  97.   return buttonState
  98. end
  99.  
  100. on newButtonType me, bType
  101.   setButtonType(me, bType)
  102.   swapImage(me)
  103.   updateStage()
  104. end
  105.  
  106. on setButtonType me, bType
  107.   set buttonType to bType
  108.   set buttonAction to new(script (buttonType & "ButtonScript"))
  109.   set onPict to member (buttonType & "On")
  110.   set upPict to member (buttonType & "Up")
  111.   set downPict to member (buttonType & "Down")
  112.   set offPict to member (buttonType & "Off")
  113. end
  114.  
  115. on turnON me
  116.   if buttonState = #off then
  117.     setButtonState(me, #on)
  118.     updateStage()
  119.   end if
  120. end
  121.  
  122. on buttonOn me
  123.   if buttonState = #off then
  124.     return 0
  125.   end if
  126.   return 1
  127. end
  128.  
  129. on turnOff me
  130.   if buttonState <> #off then
  131.     setButtonState(me, #off)
  132.     updateStage()
  133.   end if
  134. end
  135.  
  136. on stayDown me
  137.   set stayDown to 1
  138. end
  139.  
  140. on popUp me
  141.   set stayDown to 0
  142. end
  143.