| 1 | [[BackLinksMenu]] |
| 2 | |
| 3 | [[TicketQuery(summary=INTERACTIVITY_COMMONS_R0, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|)]] |
| 4 | |
| 5 | = Analysis = |
| 6 | |
| 7 | == Overview == |
| 8 | |
| 9 | Interactivity is defined as how a user interacts with the book. They may click a button that hides a field, or starts a timeline. They may show three images, then change the page. |
| 10 | |
| 11 | These state changes are not permanent to the book. They can be considered changes to the state of the book for this particular user's session. Thus, we'll need to track these changes separately from authoring changes and more importantly, from changes that would affect the saved state of the book. While the author won't allow saving the book, we don't want to rely on that side-effect mechanism to handle this use-case. |
| 12 | |
| 13 | You should look at the change system being put into place in PRO_LIB and determine how we can use that for temporary changes caused by the user interacting with the book. For example, there might be a separate change manager that is not part of the undo stack, or maybe later we'll deem it should be. But this change list would not be looked at by Author to determine if the book is indeed changed, in fact, it wouldn't even see these changes, as they would be kept on a completely different list. |
| 14 | |
| 15 | In author, when a scene is rendered, it uses the book structure. When in the Reader Mode (or reader itself) it also applies changes from this second, user created change list. Switching between author and reader clears this change manager. |
| 16 | |
| 17 | The interactions for objects include, but are not limited to: |
| 18 | |
| 19 | * Hiding the target's frame |
| 20 | * Showing the target's frame |
| 21 | * toggling the visibility of the target's frame |
| 22 | * Starting a media object (movie, audio, timeline) |
| 23 | * Stopping a media object |
| 24 | * Change a frames zed order |
| 25 | * reset the page (throw away changes for any object on this page) |
| 26 | |
| 27 | This would be a good start. The user should be able to create an action/script that when executed, changes these states of the target objects. They should then be able to trigger these actions upon: |
| 28 | |
| 29 | * mouse down |
| 30 | * mouse up |
| 31 | * mouse enter |
| 32 | * mouse leave |
| 33 | * mouse over |
| 34 | * page displayed |
| 35 | |
| 36 | Mouse over is an interesting one. If we can mark the temporal change manager when the mouse enters a frame, ie before any actions are executed, then when the mouse LEAVES the frame, we can simply revert to that marked spot on the list. This would make it super simple for the author to generate something that showed 5 frames around the targeted frame, for example, and when the mouse left the targeted frame, they would all hide again. |
| 37 | |
| 38 | |
| 39 | == Task requirements == |
| 40 | |
| 41 | * Make sure the change manager allows us to keep a separate set of changes to objects in the book |
| 42 | * Determine how we can utilize this second change manager to temporally change objects in the book |
| 43 | * Create a module for actions |
| 44 | * an action is an association of target/action, such as hide that frame |
| 45 | * Then create an Action List which is a list of actions |
| 46 | * Create a Trigger which maps a trigger object, the trigger itself (mouse up) and the action list |
| 47 | |
| 48 | == Task result == |
| 49 | |
| 50 | The result of this task is code |
| 51 | |
| 52 | == Implementation idea == |
| 53 | ^(Provide some rough implementation idea(s).)^ |
| 54 | |
| 55 | == Related == |
| 56 | |
| 57 | * [wiki:PRO_CHANGE_UNDO_MANAGER_R0] |
| 58 | * [wiki:PRO_CHANGE_INFOS_R0] |
| 59 | * [wiki:PRO_CHANGE_COMMONS_R0] |
| 60 | |
| 61 | == How to demo == |
| 62 | |
| 63 | * |
| 64 | |
| 65 | = Design = |
| 66 | ^(Describe your design here.)^ |
| 67 | |
| 68 | = Implementation = |
| 69 | ^(Describe and link the implementation results here (from the wiki or the repository).)^ |
| 70 | |
| 71 | = Testing = |
| 72 | ^(Place the testing results here.)^ |
| 73 | |
| 74 | = Comments = |
| 75 | ^(Write comments for this or later revisions here.) |