関数内に直接アクセスする必要のある関数があります。
//#############################################################
//# Global vars
//#############################################################
var canvasWidth = 585;
var canvasHeight = 780;
//#############################################################
//# Init the canvas
//#############################################################
window.onload = function() {
initStage();
};
//#############################################################
//# Init the main stage
//#############################################################
function initStage() {
//*************************************************************
//* Create a stage to work with
//*************************************************************
var stage = new Kinetic.Stage({
container: "container",
width: canvasWidth,
height: canvasHeight
});
var layerOne = new Kinetic.Layer();
var imageObj = new Image();
//*************************************************************
//* Load the image into a layer on the stage
//*************************************************************
... Some Code ...
//*************************************************************
//* Set the hidden field value to the canvas dataURL
//*************************************************************
function autoSave(){
stage.toDataURL({
callback: function(dataUrl){
document.getElementById("mapping-form:hiddenDataURL").value = dataUrl;
console.log("Auto Save excecuted");
},
mimeType: 'image/jpeg',
quality: 1.0
});
}
//*************************************************************
//* Function called to add text to the stage
//*************************************************************
... Some Code ...
layerTwo.add(txt);
stage.add(layerTwo);
});
}
autoSave()にアクセスしようとしています(その代わりに、親関数のステージ変数が必要です)。アクセスできない理由は理解できますが、コードを変更してアクセスできるようにする方法を見つけるのに苦労しています。
私の最初の考えは、単に「より高いスコープの」変数を宣言し、それに関数を割り当てることでした。問題は、(私が見る限り)これでは、要求された時間にautoSave()を実際に実行できないことです。
この質問の基本的な性質についてお詫びします。私はJSを初めて使用しますが、これが基本になると思います。