私はライブラリから利用できるさまざまなキャンバス機能を持ついくつかの図面を実行するためにキャンバスライブラリを使用しています(私はfabric.jsを使用しています)。特定のイベントのグローバル変数を設定するjQuery関数を書く良い方法はありますか?
私のjavascriptのスキルはあまり良くありませんので、コードを正しく構造化する方法についてアドバイスをいただければ幸いです。これはfabric.jsの問題ではなく、単にjavascript/jQueryであることに注意してください。
私はいくつかのキャンバス機能を持っていますが、オブジェクト/イレーサーツールを削除する必要があるときに問題が発生します。
var isEraserActive = false;
$('#cursorCv').click(function(){
canvas.isDrawingMode = false;
isEraserActive = false;
});
$('#eraserCv').click(function(){
canvas.isDrawingMode = false;
canvas.deactivateAll().renderAll();
isEraserActive = true;
});
canvas.on('object:selected', function(options){
\t \t if(isEraserActive){
canvas.remove(options.target);
}
});
私はイベントリスナーの条件を満たし内のすべての機能にちょうどそうif(isEraserActive)
をisEraserActive = false;
を追加することのアイデアを好きではありません。これを達成するためのはるかに効率的な方法が必要です。また、私の関数の実行に時間がかかり、イベントリスナーが起動してもグローバル変数は時間的に変化しないでしょうか?それはちょうど実際には悪いコード構造のように見えます。例えば、私は下にもっと多くのキャンバス機能を持っています。この問題にアプローチするための最良の方法だろう何
$('#squareCv').click(function(){
var isEraserActive = false;
});
$('#hollowSquareCv').click(function(){
var isEraserActive = false;
});
$('#circleCv').click(function(){
var isEraserActive = false;
});
$('#hollowCircleCv').click(function(){
var isEraserActive = false;
});
$('#fontTextCv').click(function(){
var isEraserActive = false;
});
?
ありがとうございます!