I’m working on a UI system for my game, it’s like a scrolling frame except it uses an ‘Up’ and ‘Down’ button to navigate the scrolling frame; this is the part I’m stuck on. I know how to get through the list of options via the buttons, but how would I get the scrolling frame to focus on the selected item via a function?
I’m stumped on how to even get started:
do Utility:ClearChildrenOfClass(mapSection.List,"Frame") local function setCard(cardObject: Frame) local cardAbsolutePosition = cardObject.AbsolutePosition local cardAbsoluteSize = cardObject.AbsoluteSize local listAbsoluteSize = mapSection.List.AbsoluteSize -- this function should take a card object, then highlight the card (don't -- worry about this), then if the card isn't in view of the scrollingframe -- area, move the scrollingframe's scroll position to the card end local cardCount = 0 for operationId,operationData in pairs(operations) do if operationData.hidden then continue end local newCard = script.map_example:Clone() newCard.Title.Text = operationData.displayName:upper() newCard.Active = operationData.canSelect newCard.Parent = mapSection.List cardCount += 1 end local canvasSize = UDim2.new(0,0,0,((cardCount * script.map_example.Size.Y.Offset) + ((cardCount - 1) * (5)))) local cardList,currentIndex = Utility:GetChildrenOfClass(mapSection.List,"Frame"),1 mapSection.List.CanvasSize = canvasSize setCard(cardList) end
For example: in the screenshot below, the selection would start on the card ‘The Facility4’ then if I clicked the bottom ‘X’ button 5 times, the scrolling frame would move to fit the card ‘The Facility2’ completely in.
https://gyazo.com/96488dc182a692239bc0e52168b9b97e (id like to replicate this effect)
Any help would be much appreciated,