Hi Andreas,

> But if I resize the sprite (using width or rect or whatever) and load
> new members into it, every image will be resized to the set sprite
> dimensions.
>
> Compensating for this creates all kinds of flickering and
> inconssistent behavior for the end user. (See example* further down.)
>
> Q: How do I reset the sprite so that it automatically adjusts to the
> size of its contents? (_Before_ displaying the contents, that is...)


I've just tried the un-puppetization then re-puppetization of sprites quite
successfully, like in the test script below. (caveat : with directToStage
videos I don't know how this may work)

The idea is to kept the loc of sprite, unpuppet it to ask him to forgot its
lingo based property changes and re-puppet him immediately and set its new
properties (bypassing this un/repuppetisation already makes me encounter
unpredictable (at last not the ones I've predicted) results)
hth,
.seb


-- test behavior

----------------------------------------------------------------------
---- SYSTEM HANDLERS ----                                     SYSTEM *
on _____________________SYSTEM_HANDLERS_________________________ ()

on beginSprite me
  me.miReset()
end

on mouseUp me
  myMember = sprite(me.spriteNum).member

  case myMember.name of:
    "bmp1":
      me.miChange()
    "bmp2":
      me.miReset()
  end case
end


----------------------------------------------------------------------
---- PRIVATE METHODS ----                                    PRIVATE *
on _____________________PRIVATE_METHODS___________________________()


on miChange (me) -----------------------------------------------------
  --                                                           PRIVATE
  -- > mouseUp
  -------

  mySprite  = sprite(me.spriteNum)
  myLoc     = mySprite.loc
  newMember = member("bmp2")

  -- restore default sprite settings
  puppetSprite me.spriteNum, FALSE
  puppetSprite me.spriteNum, TRUE

  myW    = newMember.width /2
  myH    = newMember.height/2
  myRect = rect(myLoc[1]-myW,\
                myLoc[2]-myH,\
                myLoc[1]+myW,\
                myLoc[2]+myH)

  mySprite.member = newMember
  mySprite.rect   = myRect

end -- miChange handler



on miReset (me) ------------------------------------------------------
  --                                                           PRIVATE
  -- > mouseUp
  -------

  mySprite = sprite(me.spriteNum)
  myLoc    = mySprite.loc
  newMember = member("bmp1")

  -- restore default sprite settings
  puppetSprite me.spriteNum, FALSE
  puppetSprite me.spriteNum, TRUE

  myW    = newMember.width
  myH    = newMember.height
  myRect = rect(myLoc[1]-myW,\
                myLoc[2]-myH,\
                myLoc[1]+myW,\
                myLoc[2]+myH)

  mySprite.member = newMember
  mySprite.rect   = myRect

end -- miReset handler

on _____________________END_OF_OBJECT_____________________ ()
on _______________________________________________________________()

[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]

Reply via email to