Scale9 = Core.class( Sprite ) function Scale9:init( sprite_topleft, sprite_topmiddle, sprite_topright, sprite_middleleft, sprite_middlemiddle, sprite_middleright, sprite_bottomleft, sprite_bottommiddle, sprite_bottomright ) self.scale3_top = Scale3.new( sprite_topleft, sprite_topmiddle, sprite_topright ) self:addChild( self.scale3_top ) self.scale3_middle = Scale3.new( sprite_middleleft, sprite_middlemiddle, sprite_middleright ) self.original_height = self.scale3_middle:getHeight() self:addChild( self.scale3_middle ) self.scale3_bottom = Scale3.new( sprite_bottomleft, sprite_bottommiddle, sprite_bottomright ) self:addChild( self.scale3_bottom ) self:updateSprites() end function Scale9:setWidth( width ) self.scale3_top:setWidth( width ) self.scale3_middle:setWidth( width ) self.scale3_bottom:setWidth( width ) end function Scale9:setHeight( new_height ) local scale3_middle = self.scale3_middle local current_x, current_y, current_width, current_height = scale3_middle:getBounds(scale3_middle) new_height = new_height - self.scale3_top:getHeight() - self.scale3_bottom:getHeight() if new_height < 0 then new_height = 0 end local new_scale_y = new_height/current_height scale3_middle:setScaleY( new_scale_y ) self:updateSprites() end function Scale9:updateSprites() local scale3_middle = self.scale3_middle local y = self.scale3_top:getHeight() scale3_middle:setY(y) local y = y + scale3_middle:getHeight() self.scale3_bottom:setY(y) end