home *** CD-ROM | disk | FTP | other *** search
/ MacAddict 6 / MacAddict_006_1997_02.iso / media / Main.Dxr / Internal_80_PopupClass.ls < prev    next >
Encoding:
Text File  |  1996-11-25  |  3.6 KB  |  140 lines

  1. property spritelist, keylist, basenamelist, prefix, activesprite, maxframelist, sound, activatedflag
  2.  
  3. on new me, animname, keyname, mysound, myactivatedflag
  4.   if voidp(myactivatedflag) then
  5.     set activatedflag to 1
  6.   else
  7.     set activatedflag to myactivatedflag
  8.   end if
  9.   if voidp(mysound) then
  10.     set sound to 0
  11.   else
  12.     set sound to mysound
  13.   end if
  14.   set prefix to animname
  15.   set keylist to getspritelist(keyname)
  16.   set spritelist to getspritelist(animname)
  17.   set basenamelist to []
  18.   set maxframelist to []
  19.   repeat with spritenum in spritelist
  20.     set basename to the name of member the memberNum of sprite spritenum
  21.     add(basenamelist, basename)
  22.     repeat with index = 1 to 100
  23.       if the number of member (basename & string(index)) < 1 then
  24.         if index = 1 then
  25.           alert("No animations for '" & basename & "'were found.")
  26.           halt()
  27.           next repeat
  28.         end if
  29.         add(maxframelist, index - 1)
  30.         set index to 101
  31.       end if
  32.     end repeat
  33.   end repeat
  34.   set activesprite to 0
  35.   clearactorlist(me)
  36.   add(the actorList, me)
  37.   return me
  38. end
  39.  
  40. on clearactorlist me
  41.   set olddelimiter to the itemDelimiter
  42.   set the itemDelimiter to QUOTE
  43.   repeat with obj in the actorList
  44.     if item 2 of string(obj) = "PopupClass" then
  45.       if prefix = the prefix of obj then
  46.         set pos to getPos(the actorList, obj)
  47.         deleteAt(the actorList, pos)
  48.         exit repeat
  49.       end if
  50.     end if
  51.   end repeat
  52. end
  53.  
  54. on stepFrame me
  55.   if not activatedflag then
  56.     exit
  57.   end if
  58.   set cursprite to rollOver()
  59.   if getPos(spritelist, cursprite) > 0 then
  60.     if the visible of sprite cursprite then
  61.       set revertflag to 0
  62.     else
  63.       set revertflag to 1
  64.     end if
  65.   else
  66.     if getPos(keylist, cursprite) > 0 then
  67.       if cursprite = activesprite then
  68.         set revertflag to 0
  69.       else
  70.         set targetsprite to getAt(spritelist, getPos(keylist, cursprite))
  71.         if the visible of sprite targetsprite then
  72.           set revertflag to 0
  73.         else
  74.           if activesprite > 0 then
  75.             revert(me, activesprite)
  76.             set activesprite to 0
  77.             exit
  78.           end if
  79.           set activesprite to targetsprite
  80.           popup(me)
  81.           set revertflag to 0
  82.         end if
  83.       end if
  84.     else
  85.       if activesprite > 0 then
  86.         revert(me, activesprite)
  87.         set activesprite to 0
  88.       end if
  89.     end if
  90.   end if
  91.   if revertflag then
  92.     revert(me)
  93.   end if
  94. end
  95.  
  96. on popup me
  97.   set the visible of sprite activesprite to 1
  98.   set pos to getPos(spritelist, activesprite)
  99.   if stringp(sound) then
  100.     puppetSound(4, sound)
  101.   end if
  102.   set basename to getAt(basenamelist, pos)
  103.   repeat with index = 1 to getAt(maxframelist, pos)
  104.     set the castNum of sprite activesprite to the number of member (basename & string(index))
  105.     updateStage()
  106.   end repeat
  107. end
  108.  
  109. on revert me, whichSprite
  110.   if voidp(whichSprite) then
  111.     set whichSprite to activesprite
  112.   end if
  113.   if the visible of sprite whichSprite = 0 then
  114.     exit
  115.   end if
  116.   set pos to getPos(spritelist, whichSprite)
  117.   set basename to getAt(basenamelist, pos)
  118.   repeat with index = getAt(maxframelist, pos) down to 1
  119.     set the castNum of sprite whichSprite to the number of member (basename & string(index))
  120.     updateStage()
  121.   end repeat
  122.   set the castNum of sprite whichSprite to the number of member basename
  123.   updateStage()
  124.   set the visible of sprite whichSprite to 0
  125. end
  126.  
  127. on dispose me
  128.   repeat with spritenum in spritelist
  129.     if the puppet of sprite spritenum then
  130.       puppetSprite(spritenum, 0)
  131.     end if
  132.     if the visible of sprite spritenum then
  133.       set the visible of sprite spritenum to 1
  134.     end if
  135.   end repeat
  136.   clearactorlist(me)
  137.   set me to 0
  138.   return 0
  139. end
  140.