アプレット内に作成すべきオブジェクト
数値オブジェクト pageX, pageY, ratioX, ratioY, rectX, rectY
※いずれも値は任意;最大値、最小値は限定しないでおく。
点オブジェクト A
A = PixelPoint[(pageX - rectX) / ratioX, (pageY - rectY) / ratioY]
オリジナルツールPixelPointの導入が必要です。
var frame = 0;
var appType = location.href.split('/')[3];
function ggbOnInit() {
requestAnimationFrame(ggbOnInit);
frame++;
if(frame % 30 != 0) { return; }
var clickOrTouchStart =
window.ontouchstart===null?'touchstart':'click';
if(location.href.split('/')[3] == 'classic'){
var canvas = document.getElementsByTagName('canvas')[1];
}
else{
var canvas = document.getElementsByTagName('canvas')[0];
}
canvas.addEventListener(clickOrTouchStart,pixelPicker);
}
function pixelPicker(e){
var pageX = e.pageX;
var pageY = e.pageY;
if(location.href.split('/')[3] == 'classic'){
var canvas = document.getElementsByTagName('canvas')[1];
}
else{
var canvas = document.getElementsByTagName('canvas')[0];
}
var clientRect = canvas.getBoundingClientRect();
var rectX = window.pageXOffset + clientRect.left;
var rectY = window.pageYOffset + clientRect.top;
var ratioX;
var ratioY;
var transformText = document.getElementsByClassName('applet_scaler')[0];
if(typeof transformText === 'undefined'){
transformText = 'none';
}
else{
transformText = transformText.style.transform;
}
if(transformText == 'none'){
ratioX = 1;
ratioY = 1;
}
else{
var editedText = transformText.slice(6,-1);
ratioX = eval('['+editedText+']')[0];
ratioY = eval('['+editedText+']')[1];
}
ggbApplet.setValue('pageX', pageX);
ggbApplet.setValue('pageY', pageY);
ggbApplet.setValue('rectX', rectX);
ggbApplet.setValue('rectY', rectY);
ggbApplet.setValue('ratioX', ratioX);
ggbApplet.setValue('ratioY', ratioY);
}