Events

From MiniScript Wiki
Jump to navigation Jump to search

This system module defines the EventSprite class which expands on the Sprite class to add definable event functions called handlers. These handlers are triggered under certain conditions such as a mouse being clicked. A special EventLoop is defined to act as a dedicated game loop that manages all of the event classes. Since the EventLoop is continuous until terminated by an event,

Classes

Name Description
EventHandler Stores information about the action to take when responding to an Event.
KeyHandler Stores the current state of a particular Key including whether it is Up, Down or being Held down.
EventSprite Builds on the Sprite class to add event handlers that respond to events such as: onKey, onKeyDown, onKeyUp, onClick, etc.


Event Loop

Within the module, there is a special singleton class call eventLoop which is meant to only exist once. It governs the game loop and manages the responses to the triggered events. This is a dedicated game loop which will continue to execute until an event terminates the loop or program in some way.


Example

	import "events"

	clear
	display(4).mode = displayMode.sprite
	spr = new events.EventSprite
	spr.image = file.loadImage("/sys/pics/Wumpus.png")
	spr.onKey = new events.KeyHandler
	spr.onKey["left"] = function
		self.x = self.x - 10
		if self.x < 50 then eventLoop.stop
	end function
	spr.onKey["right"] = function
		self.x = self.x + 10
	end function
	events.eventLoop.onKey["escape"] = function
		eventLoop.stop
	end function
	events.eventLoop.onKeyDown["space"] = function; print "space down"; end function
	events.eventLoop.onKey["space"] = function; print "space held"; end function
	events.eventLoop.onKeyUp["space"] = function; print "space up"; end function
	
	spr.onClick = function
		self.scale = 1.5
	end function
	spr.onDrag = function
		self.x = mouse.x
		self.y = mouse.y
	end function
	spr.onDragEnd = function
		self.scale = 1
	end function
	
	spr.x = 480
	spr.y = 320
	spr.start
	
	print "Click and drag, or press left/right."
	print "All event-driven.  (Esc to exit.)"
	
	events.eventLoop.run