Keywords:

_none mouse.x mouse.y smouse.x smouse.y _ignore

Mouse Events

For desktop games created with SCL, mostly like you will need to support mouse events. SCL supports two levels of mouse support for 5 different mouse events. The levels are canvas level and sprite level. Canvas level events apply to events anywhere on the canvas. Sprite level events apply to individual sprites. The events supported at both levels are:

create routine as Start set mousedown=OnCanvasMD set mouseup=OnCanvasMU end create routine as OnCanvasMD log("mouse down at "+mouse.x+","+mouse.y) end create routine as OnCanvasMU log("mouse up at "+mouse.x+","+mouse.y) end

As above, to set a mouse event for the canvas, use the set command inside a routine. You can access the location of the mouse click using the build-in variables, mouse.x and mouse.y

To set mouse events for individual sprites, use the same event names in the where clause of the sprite. Each sprite tracks its own mouse events. These events only fire if they occur within the sprite boundary and over an area of the sprite that is not completely transparent (alpha>0).

create sprite from image.png as S1 where x=300 y=300 click=OnSClick end create routine as Start launch S1 end create routine as OnSClick log("mouse up at "+mouse.x+","+mouse.y) log("Sprite loc of mouse up: "+smouse.x+","+smouse.y) end

As above, you can access the x,y location of the click relative to the center of the sprite by using the built-in variables smouse.x smouse.y

You can change an event handler or cancel them altogether by specifying _none as the event handler.

create routine as Example set mousemove=_none update sprite MySprite where click=OnHappyClick update sprite YourSprite where click=_none end

Normally, the top-most sprite will receive the click event. If you would like a sprite to ignore mouse events, thus allowing sprites under it to receive the event, use _ignore for the click event handler. This setting also effects touch events the same way.

create sprite from image.png as S1 where x=300 y=300 click=_ignore end