300 likes | 467 Views
Alice in Action with Java. Chapter 6 Events. Objectives. Create new events in Alice Create handler methods for Alice events Use events to build interactive stories. Events. An interactive program processes data input by a user Events are actions generated by a user or a program
E N D
Alice in Action with Java Chapter 6 Events
Objectives • Create new events in Alice • Create handler methods for Alice events • Use events to build interactive stories Alice in Action with Java
Events • An interactive program processes data input by a user • Events are actions generated by a user or a program • Ex: When the world starts caused by Play click • Two steps to making a program respond to an event • Choose (or define) a method to handle the event • Tell Alice to invoke the method when the event occurs • An event handler is a method called in response to an event • An event-driven program is based on events and handlers Alice in Action with Java
Types of Events Alice in Action with Java
Handling Mouse Clicks: The Magical Doors • Goal: add events to world built in Section 5.2.3 • Review: castle door tells random knock-knock jokes • Events that will be added to the original program • Right door opens when the user clicks it • Left door tells knock-knock joke when the user clicks it • First step: stop door from automatically telling jokes Alice in Action with Java
The Right Door • How to handle a mouse event • Choose or define a method • Define a method when responsive behavior is complex • Create an event that invokes the handler • Enabling the right door to respond to a mouse event • Add When the mouse is clicked on something • Specify castle.door1 as the event source • Use a turn()message to handle the event Alice in Action with Java
The Left Door • Enabling the left door to respond to a mouse event • Specify castle.door2as the source of this event • Drag-and-drop world’s random joke method as handler • Test the program by clicking each door Alice in Action with Java
The Right Door Revisited • Two-state behavior • Describes one of two states that an object can occupy • The state is determined by the value of a property • An ifstatement controls switching between states • Logic error: right door continues to turn with user click • Right door should open if closed, and close if open • Fix: implement two-state behavior for right door • Add Boolean property rightDoorClosed to castle • Replacement handler: openOrCloseRightDoor() • Build turn logic around the value of rightDoorClosed Alice in Action with Java
Event Handling is Simultaneous • Example: left door tells jokes while right door turns • Alice handles simultaneous events well • Conflicts can arise when coding parallel event logic • Example: two handlers modify the same property • How to avoid conflict • Ensure that handlers modify a property in sequence Alice in Action with Java
Categorizing Events • Mouse event: triggered by mouse movement or click • Keyboard event: triggered when user presses a key • Program event: triggered when variable value changes Alice in Action with Java
Handling Key Presses: A Helicopter Flight Simulator • The problem • The mayor’s cat is lost and city government has halted • You need to use your helicopter to find the cat • Search begins at an airport outside the city Alice in Action with Java
Design • Six keys for six types of movement • ‘a’ key: ascend • ‘d’ key: descend • Up arrow key: move forward • Down arrow key: move backward • Left arrow key: turn left • Right arrow key: turn right • Keys are chosen for two reasons • Convenient position and mnemonic values • Choosing correct keys improves usability Alice in Action with Java
Programming in Alice • Setting up the world for a helicopter simulation • Add airport, helicopter, city terrain, buildings, and a cat • Position the helicopter at the airport • Position camera to be peering out in front of helicopter • Set the camera’s vehicleproperty to be helicopter • Making the helicopter’s propeller spin • Use heli blade()to handle the press of Play button • Making the helicopter ascend • Define Boolean property inTheAir for helicopter • Define helicopter.ascend() Alice in Action with Java
Programming in Alice (continued) • Making the helicopter ascend (continued) • Add a When a key is typed event • Change event to While a keyis typed event • Associate the ‘A’ key with the event • Enable the handler to perform while ‘A’ key is pressed • Making the helicopter descend • Define descend()method for helicopter • Method logic mirrors the logic of ascend() • Note that the ground provides a floor for the descent • Enable descend()to perform while ‘D’ key is pressed Alice in Action with Java
Programming in Alice • Let arrow keys move <subject>event • Not appropriate for controlling helicopter movement • helicopter would move while on the ground • Define turnSlightly()to handle left or right turns • turnSlightly()takes a Left or Right argument • helicopterturns only ifinTheAiris true • Arrow keys are associated with the method • Depressing arrow key sends a Left or Right argument • Define go()to handle forward or backward movement • Logic is similar to logic for turnSlightly()method Alice in Action with Java
Alice Tip: Using 3-D Text • Helicopter simulator should have flight instructions • Solution: add 3-D text that explains the interface • Creating 3-D text for the simulator • Return to the Add Objects screen • Click Create 3D Text (at far end of Local Gallery) • Add flight instructions in the text box • Click OK • Rename the text object, instructions Alice in Action with Java
Repositioning Text that is Off-Camera • Right-click instructions to access methods • Three settings for positioning text in front of camera • Choose methods-> setPointOfView(<asSeenBy)->camera • Choose methods->move(<direction>,<amount>) ->FORWARD->10 meters • Choose methods->turn<direction>,<amount>) ->LEFT->1/2 revolution • Linking text to camera and changing text color • Set instructions.vehicle to camera • Set instructions.color to yellow Alice in Action with Java
Adding a Background • Text for instructions is difficult to read • Solution: provide a background for the text • One way to add a background to instructions • Insert squareobject (Square is in Shapes Folder) • Resize and reposition squarebehind instructions • Set square.colorproperty to black • Make light turn to face the instructions • Set the square.vehicleproperty to instructions Alice in Action with Java
Making Text Appear or Disappear • Another example of two-state behavior • Implementation strategy • Add handler to switch value of isShowing property • Logic of toggleInstructionVisibility() • Negate the value of isShowing property • Apply negation to both squareand instructions • Completing the implementation of the handler • Add a When a key is typedevent • Associate the toggle method with the spacebar Alice in Action with Java
Making Text Appear or Disappear (continued) Alice in Action with Java
Alice Tip: Scene Transitional Effects for the Camera • Transition: bridge between two scenes (or shots) • Some transition effects • Cut: instantaneous jump from one scene to another • Fade: darken existing scene, light another • Wipe: cover existing scene, uncover new scene • Alice does not provide built-in transitional effects • Alice does provide building blocks for transitions Alice in Action with Java
Setup for Special Effects • Creating shutters for your camera • Add four squares outside of the viewport • Change names to indicate shutter positions • Change each squarecolor to black • Change each square.vehicleto camera • Move the shutters outside of the viewing area • Shutters will be manipulated to create effects Alice in Action with Java
Setup for Special Effects (continued) Alice in Action with Java
The Fade Effect • A fade effect darkens and then lightens a screen • Create effect using complementary methods • Overview of implementing fadeToBlack() • Set the topShutter’s opacity to zero percent • Move the topShutterto cover the camera viewport • Set topShutter opacity back to 100 percent • Overview of implementing fadeFromBlack() • Reverse the actions of fadeToBlack() • Use fadeToBlack()and fadeFromBlack()in pairs • The scene changes between method calls Alice in Action with Java
The Barndoor Edge Wipe Effect • Edge wipe: edges cover one scene, reveal another • Barndoor wipe: shutters slide like doors of a barn • Vertical: doors close and open from sides of screen • Horizontal: doors close and open from top and bottom • Create barndoor wipes with complementary methods • Implementing verticalBarndoorClose() • Move the left and right shutters into the viewing area • Implementing verticalBarndoorOpen() • Move the left and right shutters out of the viewing area Alice in Action with Java
The Box Iris Wipe Effect • Iris contains the open area of the screen • End one scene by shrinking the iris • As iris expands, the new scene is revealed • Defining the box iris close effect • Simultaneously move all four shutters onto viewport • Sender specifies duration of the effect • Sender specifies percentage the iris is closed • One parameter and two local variables are needed • Box iris open effect is complementary to close effect Alice in Action with Java
Reusing Transition Effects • Limitations of save object as… technique • Cannot be used to save properties as objects • Consequence: camera cannot be saved with shutters • Solution: define transitions in a template world • Contents of template (named TransitionEffects) • camera, light, ground, and squares • Using TransitionEffectstemplate world • Open template as starting world for user story • Use File->Save world as…to save and rename Alice in Action with Java
Summary • Event: action generated by a user or a program • User events: keyboard events and mouse events • Event handler: method called in response to an event • Event-driven program: program directed by events and handlers • Two-state behavior: pattern that switches the state of an object Alice in Action with Java
Summary (continued) • Add 3D Text dialog box: tool for inserting text • square: convenient shape for creating a text background and transition effects • Transition effect: bridge between two scenes • Types of transition effects: cut, fade, and wipe • A transition effects template world includes ground, light, camera, and effects objects Alice in Action with Java