When I have linked up a particular widget to an action and I have chosen “All Widgets of the Same Type”, I have a very elegant and straightforward way of interaction with a lot of widgets (of the same type). One of the reasons why Antetype is faster than any other prototyping app out there (by orders of magnitude - I am not exaggerating!).
Here’s the snag: I have been tracking down cases whereby widget actions suddenly break and I have found one major source of conflict:
When you add a widget to an action and set the action to “All Widgets of the Same Type”, the ORIGINAL WIDGET is expected to still be there for this to work. Obviously, there is no way of knowing which particular widget was the one you hooked up in the first place, especially, if you have hundreds of them and there is no way to backtrack to the original from the actions in the Interactions Inspector.
Here’s the scenario: You duplicate a screen with all the widgets you have hooked up to interactions. Then, you delete the widget with the original instance (in this case “Dialog text”) and everything goes south. Why? Because the Interactions inspector cannot find that instance.
This is crazy. It should not be like this. Once I have told an Interaction to use a particular type of widget, it should not matter if the original is still present! The interaction must not break until the last one of the type has been deleted. Then, and only then is it ok for the interaction to break.
I hope this all makes sense!
What we definitely need is a way to backtrack the widgets that have been hooked up to an interaction. When I select one of the lozenge shapes in the Interaction Inspector, the original should light up on the opposite side of the screen in the Object Inspector. If it was set to “All Widgets of the Same Type”, all those Widgets should light up. This would make everything much smoother and easier to keep track of the myriads of interactions you set up during the course of a project.
what we currently do for “All Widgets of the Same Type” is:
- iterate over the cells in the Action-Group and collect all widgets of the given cells
- iterate over cell cells of the screen, if a cell is instance from a widget in the widget-list collected in the first step it is a targetCell
We do not store the widget inside the action-group. I suspect the problem is once again the state we store in Change/Toggle-State-Actions. Or does the state still show up in the Change/Toogle-State action menus?
I think this is where it goes wrong: if the original cell is not there, there is nothing to iterate. You need to replace the cell with the reference to the widget instead of the cell instance as soon as it is linked up.
Yes, the state shows up fine because there are other widgets in the group.
but if a cell is deleted it should not show up in the cell-list of the action group. I tried deleting a cell, deleting a widget and copy/paste with a cell in the list not on the clipboard it is removed from the list. That was far from a comprehensive test … there are a lot more ways to remove it. If you have a document where a cell is not there but still in the list: I am very much interested
Yes it should!
How can I set up complex prototypes if I have to go hunting for which one of my widgets was the original one? I shuffle them around and put them in different places to try out things. It’s like the game with the three cups.
Here is an example:
Delete the first one of the ‘Widgets of the Same Type’. Boom. Interaction broken. It should not break! There are still other widgets of the same type.
Widgets of Same Type.atype.zip (146.9 KB)
ok, now I understand the problem. But unfortunately I do not see a quick fix here, we rather would have to change the way we store it for those “Widgets of the same type”-specifiers. Thanks for explaining
Ok, here’s a workaround, in case others are having the same issue:
Create a new rectangle, make it 0x0 px, no fill, no border, float top right.
When you hook up a widget to an action with “All Widgets of The Same Type”, place the first instance of these widgets into this “Saver Wrapper”. Then, make a copy of the widget, and use that copy and subsequent copies in your prototype.
When you copy the widget, and anything it’s been connected to, to a new screen or a new document even, make sure to copy the “Saver Wrapper” along and you’re good to go. At least it won’t break your prototype, as long as you remember.
Here’s an example
Saver Wrapper.atype.zip (183.2 KB)
One caveat: this workaround does not work across screens. If you want to have everything linked to the same original widgets, you need to stay on the same screen. Once you start to create screens and deploy your widgets, the connections will break again.