in sim/visuals/board.ts [303:331]
constructor(def: ButtonDefinition) {
this.def = def;
def.w = def.w || 15;
def.h = def.h || 15;
this.element = svg.elt("circle", {
cx: def.x + def.w / 2,
cy: def.y + def.h / 2,
r: Math.max(def.w, def.h) / 2,
class: "sim-board-button"
}) as SVGCircleElement
svg.title(this.element, def.label);
// resolve button
this.button = def.index !== undefined
? pxsim.pxtcore.getButton(def.index)
: pxsim.pxtcore.getButtonByPin(pxsim.pinIds[def.label]);
// hooking up events
pointerEvents.down.forEach(evid => this.element.addEventListener(evid, ev => {
this.button.setPressed(true);
pxsim.U.addClass(this.element, "pressed");
}));
this.element.addEventListener(pointerEvents.leave, ev => {
pxsim.U.removeClass(this.element, "pressed");
this.button.setPressed(false);
})
this.element.addEventListener(pointerEvents.up, ev => {
pxsim.U.removeClass(this.element, "pressed");
this.button.setPressed(false);
})
}