The simple answer is you need 2 parts to this. An event (when ANY of the objects are shown), and a condition (to filter the response to only happen when ALL the objects are currently visible). You could create Global Variables to keep track of this information, but it's unnecessary in this case because you have objects that are shown, and those objects stick around. So you can just ask them if they are visible.
Here's a video that walks through how to set up this sort of functionality - https://share.smartbuilder.com/public/support/detect-when-all-objects-shown.mp4
If you have objects that hide (say rollover > show, rollout > hide), then you may want to show another persistent element (like a checkmark shape). This persistent object could even not be viewable to the learner - perhaps it is placed outside the page boundaries, or behind another object, but you can use it to "remember" what has been done.
Local Variables wouldn't help in this case because they cease to exist at the end of their action. Currently, there is no "Page Variable" like there was in v3, so they won't be of any help here. See this video for more information about local variables - https://youtu.be/7Vo4GF1wnMU