fix pin touch events
This commit is contained in:
parent
2415b146fa
commit
97db49dc71
@ -10,7 +10,7 @@ svg.sim {
|
|||||||
stroke-width: 3px;
|
stroke-width: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sim-pin-touch:hover {
|
.sim-pin:hover {
|
||||||
stroke:#D4AF37;
|
stroke:#D4AF37;
|
||||||
stroke-width:2px;
|
stroke-width:2px;
|
||||||
}
|
}
|
||||||
|
@ -516,7 +516,7 @@ namespace ks.rt.micro_bit {
|
|||||||
this.pins.push(Svg.path(this.g, "sim-pin", "M0,357.7v19.2c0,10.8,6.2,20.2,14.4,25.2v-44.4H0z", "P3, ANALOG IN, LED Col 1"));
|
this.pins.push(Svg.path(this.g, "sim-pin", "M0,357.7v19.2c0,10.8,6.2,20.2,14.4,25.2v-44.4H0z", "P3, ANALOG IN, LED Col 1"));
|
||||||
|
|
||||||
[66.7,79.1,91.4,103.7,164.3,176.6,188.9,201.3,213.6,275.2,287.5,299.8,312.1,324.5,385.1,397.4,409.7,422].forEach(x => {
|
[66.7,79.1,91.4,103.7,164.3,176.6,188.9,201.3,213.6,275.2,287.5,299.8,312.1,324.5,385.1,397.4,409.7,422].forEach(x => {
|
||||||
this.pins.push(Svg.child(this.g, "rect", {x:x, y:356.7, width:10, height:50}));
|
this.pins.push(Svg.child(this.g, "rect", {x:x, y:356.7, width:10, height:50, class:"sim-pin"}));
|
||||||
})
|
})
|
||||||
Svg.title(this.pins[4], "P4, ANALOG IN, LED Col 2")
|
Svg.title(this.pins[4], "P4, ANALOG IN, LED Col 2")
|
||||||
Svg.title(this.pins[5], "P5, BUTTON A")
|
Svg.title(this.pins[5], "P5, BUTTON A")
|
||||||
@ -627,9 +627,7 @@ namespace ks.rt.micro_bit {
|
|||||||
let pin = state.pins[index];
|
let pin = state.pins[index];
|
||||||
let svgpin = this.pins[index];
|
let svgpin = this.pins[index];
|
||||||
svgpin.classList.add('touched');
|
svgpin.classList.add('touched');
|
||||||
if (pin.mode & PinMode.Touch) {
|
if (pin.mode & PinMode.Input) {
|
||||||
pin.touched = true;
|
|
||||||
} else if (pin.mode & PinMode.Input) {
|
|
||||||
let cursor = Svg.cursorPoint(pt, this.element, ev);
|
let cursor = Svg.cursorPoint(pt, this.element, ev);
|
||||||
let v = (400 - cursor.y) / 40 * 1023
|
let v = (400 - cursor.y) / 40 * 1023
|
||||||
pin.value = Math.max(0, Math.min(1023, Math.floor(v)));
|
pin.value = Math.max(0, Math.min(1023, Math.floor(v)));
|
||||||
@ -642,15 +640,29 @@ namespace ks.rt.micro_bit {
|
|||||||
let pin = state.pins[index];
|
let pin = state.pins[index];
|
||||||
let svgpin = this.pins[index];
|
let svgpin = this.pins[index];
|
||||||
svgpin.classList.remove('touched');
|
svgpin.classList.remove('touched');
|
||||||
if (pin.mode & PinMode.Touch) {
|
|
||||||
pin.touched = false;
|
|
||||||
let ens = enums();
|
|
||||||
this.board.bus.queue(pin.id, ens.MICROBIT_BUTTON_EVT_CLICK);
|
|
||||||
}
|
|
||||||
this.updatePin(pin, index);
|
this.updatePin(pin, index);
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
this.pins.slice(0,3).forEach((btn, index) => {
|
||||||
|
btn.addEventListener("mousedown", ev => {
|
||||||
|
let state = this.board;
|
||||||
|
state.pins[index].touched = true;
|
||||||
|
this.updatePin(state.pins[index], index);
|
||||||
|
})
|
||||||
|
btn.addEventListener("mouseleave", ev => {
|
||||||
|
let state = this.board;
|
||||||
|
state.pins[index].touched = false;
|
||||||
|
this.updatePin(state.pins[index], index);
|
||||||
|
})
|
||||||
|
btn.addEventListener("mouseup", ev => {
|
||||||
|
let state = this.board;
|
||||||
|
state.pins[index].touched = false;
|
||||||
|
this.updatePin(state.pins[index], index);
|
||||||
|
let ens = enums();
|
||||||
|
this.board.bus.queue(state.pins[index].id, ens.MICROBIT_BUTTON_EVT_CLICK);
|
||||||
|
})
|
||||||
|
})
|
||||||
this.buttonsOuter.slice(0,2).forEach((btn, index) => {
|
this.buttonsOuter.slice(0,2).forEach((btn, index) => {
|
||||||
btn.addEventListener("mousedown", ev => {
|
btn.addEventListener("mousedown", ev => {
|
||||||
let state = this.board;
|
let state = this.board;
|
||||||
|
Loading…
Reference in New Issue
Block a user