動作見本
タッチデバイスでは正確に動作しません。マウスデバイス専用です。
(追記)
タッチデバイス専用版ができました。
usidesu.hatenablog.com
※参考:グローバルjavaスクリプトの内容(タッチデバイス非対応版)
var canvas;
if(document.getElementsByClassName("EuclidianPanel")[0]==undefined){
var canvas = document.getElementsByClassName("GeoGebraFrame")[0].firstChild.firstChild;
}
else{
var canvas = document.getElementsByClassName("EuclidianPanel")[0].firstChild;
}
var containerWidth;
var containerHeight;
if(document.getElementsByClassName("applet_container")[0]==undefined){
var containerWidth = canvas.offsetWidth;
var containerHeight = canvas.offsetHeight;
}
else{
var containerWidth = document.getElementsByClassName("applet_container")[0].offsetWidth;
var containerHeight = document.getElementsByClassName("applet_container")[0].offsetHeight;
}
var frameWidth = ggbApplet.getValue("frameWidth");
var frameHeight = ggbApplet.getValue("frameHeight");
var widthRatio = containerWidth / frameWidth;
var heightRatio = containerHeight / frameHeight
function ggbOnInit() {
console.log("EuclidianPanelは"+document.getElementsByClassName("EuclidianPanel")[0]+"です。");
console.log("applet_containerは"+document.getElementsByClassName("applet_container")[0]+"です。");
console.log("変数canvasの値は、"+canvas+"です。");
console.log("変数containerWidth / frameWidthの値は、"+containerWidth+" / "+frameWidth+"です。比率"+widthRatio);
console.log("変数containerHeight / frameHeightの値は、"+containerHeight+" / "+frameHeight+"です。比率"+heightRatio);
}
function Spuit(){
var spuitx = ggbApplet.getValue("spuitx");
var spuity = ggbApplet.getValue("spuity");
var context = canvas.getContext("2d");
var spuitImage = context.getImageData(spuitx*widthRatio, spuity*heightRatio, 1, 1);
var r = spuitImage.data[0];
var g = spuitImage.data[1];
var b = spuitImage.data[2];
ggbApplet.setValue("r",r);
ggbApplet.setValue("g",g);
ggbApplet.setValue("b",b);
}