「頭文字+通し番号」のオブジェクトに対する一括操作に使えるJavaScript関数まとめ
作成
//str command〔例:'POINTα=(α,0)'〕, str index〔例:'α'〕, int 実行回数
function evalSequenceCommand(command,index,time){
index = RegExp(index,'g');
for(var k = 1; k<=time; k++){
ggbApplet.evalCommand(command.replace(index,k));
}
}
現在のオブジェクト作成状況の取得
//headNameを頭文字にもつ特定のタイプのオブジェクトname1, name3, name4が存在しているならば、配列[1,3,4]を返す。
function getExistingObjIndex(headName,objType){
var allObjNames = ggbApplet.getAllObjectNames(objType);
var targets =allObjNames.filter(function(item){
if(item.indexOf(headName)!=-1) return true;
});
targets.map( function(value, index, array){
array[index] = eval(value.substr(headName.length));
});
return targets;
}
削除
//headNameを頭文字にもつ特定のタイプのオブジェクトを全て削除する。
function deleteExistingObj(headName,objType){
var targets = getExistingObjIndex(headName,objType);
for(var k = 0; k < targets.length; k++){
ggbApplet.deleteObject(headName+targets[k]);
}
}
スタイル編集
表示非表示
//headNameを頭文字にもつ特定のタイプのオブジェクトのvisibilityを編集する。
function setExistingObjVisible(headName, objType, bool){
var targets = getExistingObjIndex(headName, objType);
for(var k = 0; k < targets.length; k++){
ggbApplet.setVisible(headName+targets[k], bool);
}
}
固定、選択許可
//headNameを頭文字にもつ特定のタイプのオブジェクトのfixを編集する。
function setExistingObjFixed(headName, objType, fixbool, selectbool){
var targets = getExistingObjIndex(headName, objType);
for(var k = 0; k < targets.length; k++){
ggbApplet.setFixed(headName+targets[k], fixbool, selectbool);
}
}
レイヤー
//headNameを頭文字にもつ特定のタイプのオブジェクトのint layerを編集する。
function setExistingObjLayer(headName, objType, layer){
var targets = getExistingObjIndex(headName, objType);
for(var k = 0; k < targets.length; k++){
ggbApplet.setLayer(headName+targets[k], layer);
}
}
動的な色
//indexごとに異なる数式によって、動的な色をセットする
function setSequenceDynamicColor(headName, objType, redScript, greenScript, blueScript, index){
var targets = getExistingObjIndex(headName,objType);
index = RegExp(index,'g');
for(var k = 0; k < targets.length; k++){
ggbApplet.evalCommand('SetDynamicColor['+headName+''+targets[k]+', '+redScript.replace(index,targets[k])+', '+greenScript.replace(index,targets[k])+', '+blueScript.replace(index,targets[k])+']');
}
}
こちらも参照
【RGB, HSL, HSV対応】GeoGebraのオブジェクトに動的な色をセットするJavaScript関数 - うしブログ
ラベル
//headNameを頭文字にもつ特定のタイプのオブジェクトのラベルのvisibilityを編集する。
function setExistingLabelVisible(headName, objType, bool){
var targets = getExistingObjIndex(headName, objType);
for(var k = 0; k < targets.length; k++){
ggbApplet.setLabelVisible(headName+targets[k], bool);
}
}
スクリプト編集
前提として定義すべき関数①
//handlerは、'click'ならonClick、それ以外ならonUpdate
function setGgbScript(objName, handler, script){
//オブジェクト存在確認
var isexist = ggbApplet.exists(objName);
if(isexist){
var objType = ggbApplet.getObjectType(objName);
var onwhat = (handler=='click') ? 'val' : 'onUpdate';
var xmlText = '<element type=\"'+objType+'\" label=\"'+objName+'\"><ggbscript '+onwhat+'=\"'+script+'\"/></element>';
ggbApplet.evalXML(xmlText);
}
}
前提として定義すべき関数②
//handlerは、'click'ならonClick、それ以外ならonUpdate
function setJavaScript(objName, handler, script){
//オブジェクト存在確認
var isexist = ggbApplet.exists(objName);
if(isexist){
var objType = ggbApplet.getObjectType(objName);
var onwhat = (handler=='click') ? 'val' : 'onUpdate';
var xmlText = '<element type=\"'+objType+'\" label=\"'+objName+'\"><javascript '+onwhat+'=\"'+script+'\"/></element>';
ggbApplet.evalXML(xmlText);
}
}
ggbスクリプトの編集(一括設定)
//indexごとに異なるスクリプトをセットする
function setSequenceGgbScript(headName, objType, handler, script, index){
var targets = getExistingObjIndex(headName,objType);
index = RegExp(index,'g');
for(var k = 0; k < targets.length; k++){
setGgbScript(headName+targets[k], handler, script.replace(index,targets[k]));
}
}
JavaScriptの編集(一括設定)
//indexごとに異なるスクリプトをセットする
function setSequenceJavaScript(headName, objType, handler, script, index){
var targets = getExistingObjIndex(headName,objType);
index = RegExp(index,'g');
for(var k = 0; k < targets.length; k++){
setJavaScript(headName+targets[k], handler, script.replace(index,targets[k]));
}
}
※変数script内での各種記号の書き方(xml エンティティ)
改行:「
」
(')シングルクオーテーション:「'」
(")ダブルクオーテーション:「"」
(&)アンパサンド:「&」
(<) 小なり:「<」
(>) 左大なり:「>」