home *** CD-ROM | disk | FTP | other *** search
- property spritelist, keylist, basenamelist, prefix, activesprite, maxframelist, sound, activatedflag
-
- on new me, animname, keyname, mysound, myactivatedflag
- if voidp(myactivatedflag) then
- set activatedflag to 1
- else
- set activatedflag to myactivatedflag
- end if
- if voidp(mysound) then
- set sound to 0
- else
- set sound to mysound
- end if
- set prefix to animname
- set keylist to getspritelist(keyname)
- set spritelist to getspritelist(animname)
- set basenamelist to []
- set maxframelist to []
- repeat with spritenum in spritelist
- set basename to the name of member the memberNum of sprite spritenum
- add(basenamelist, basename)
- repeat with index = 1 to 100
- if the number of member (basename & string(index)) < 1 then
- if index = 1 then
- alert("No animations for '" & basename & "'were found.")
- halt()
- next repeat
- end if
- add(maxframelist, index - 1)
- set index to 101
- end if
- end repeat
- end repeat
- set activesprite to 0
- clearactorlist(me)
- add(the actorList, me)
- return me
- end
-
- on clearactorlist me
- set olddelimiter to the itemDelimiter
- set the itemDelimiter to QUOTE
- repeat with obj in the actorList
- if item 2 of string(obj) = "PopupClass" then
- if prefix = the prefix of obj then
- set pos to getPos(the actorList, obj)
- deleteAt(the actorList, pos)
- exit repeat
- end if
- end if
- end repeat
- end
-
- on stepFrame me
- if not activatedflag then
- exit
- end if
- set cursprite to rollOver()
- if getPos(spritelist, cursprite) > 0 then
- if the visible of sprite cursprite then
- set revertflag to 0
- else
- set revertflag to 1
- end if
- else
- if getPos(keylist, cursprite) > 0 then
- if cursprite = activesprite then
- set revertflag to 0
- else
- set targetsprite to getAt(spritelist, getPos(keylist, cursprite))
- if the visible of sprite targetsprite then
- set revertflag to 0
- else
- if activesprite > 0 then
- revert(me, activesprite)
- set activesprite to 0
- exit
- end if
- set activesprite to targetsprite
- popup(me)
- set revertflag to 0
- end if
- end if
- else
- if activesprite > 0 then
- revert(me, activesprite)
- set activesprite to 0
- end if
- end if
- end if
- if revertflag then
- revert(me)
- end if
- end
-
- on popup me
- set the visible of sprite activesprite to 1
- set pos to getPos(spritelist, activesprite)
- if stringp(sound) then
- puppetSound(4, sound)
- end if
- set basename to getAt(basenamelist, pos)
- repeat with index = 1 to getAt(maxframelist, pos)
- set the castNum of sprite activesprite to the number of member (basename & string(index))
- updateStage()
- end repeat
- end
-
- on revert me, whichSprite
- if voidp(whichSprite) then
- set whichSprite to activesprite
- end if
- if the visible of sprite whichSprite = 0 then
- exit
- end if
- set pos to getPos(spritelist, whichSprite)
- set basename to getAt(basenamelist, pos)
- repeat with index = getAt(maxframelist, pos) down to 1
- set the castNum of sprite whichSprite to the number of member (basename & string(index))
- updateStage()
- end repeat
- set the castNum of sprite whichSprite to the number of member basename
- updateStage()
- set the visible of sprite whichSprite to 0
- end
-
- on dispose me
- repeat with spritenum in spritelist
- if the puppet of sprite spritenum then
- puppetSprite(spritenum, 0)
- end if
- if the visible of sprite spritenum then
- set the visible of sprite spritenum to 1
- end if
- end repeat
- clearactorlist(me)
- set me to 0
- return 0
- end
-