何かを描くと、イメージはスクリプトによって再描画されます。その行をコメントアウトしたので、古いイメージは消去されず、今では積み重なったイメージが多数あります。スクリプトは機能し、透明な線を描画していますが、レイヤーが多数表示されるため、透明部分はほとんど不透明になります。
スケッチのコンテンツをインポートまたは保存するには、その行にコメントする必要はありません。関数内では、 "this.actions"はすべてのユーザーの動きを格納します。データベースに保存する必要があります。おそらくはjsonとし、最初にロードしてdrawを呼び出します。
これを実際にSketchに取り入れるために、スケッチスクリプトにいくつかのfuntionsを追加します。
Sketch.prototype.export = function() {
$.post('yourfile.php', { data: JSON.stringify(this.actions) }, function (message_back) { alert(message_back); });
};
それはあなたがyourfile.php
にプリントアウトするかを画面上のすべてのJSONへのアクションと$_POST["data"]
などyourfile.php
にPOST、およびアラートを変換します
はSketch.prototype.download
前に、この機能を追加します。 yourfile.php
では、データベース内にサーバーを保存する必要があります。今
、if ($(this).attr('data-download')) {
前にこれを追加します(あなたは、新たな付加機能の前に3-4行でこれを見つけることができます):結果の画像をダウンロードするような単純なエクスポートを作るのに役立ちます
if ($(this).attr('data-export') != undefined) {
sketch.export();
}
(のようなdata-download
が、data-export
):
今
<a href="#the_id_of_canvas_here" data-export=''>Save your drawing.</a>
、のインポート機能を構築してみましょう:
は、これらの李を追加this.action = [];
後のNE(あなたがライン48のまわりでそれを見つけることができます):
if ($(this.canvas).attr('data-actions') != undefined) {
// Load json and parse it
this.actions = JSON.parse($(this.canvas).attr('data-actions'));
// Redraw image by using the data
this.redraw();
}
それはcanvas
要素のdata-actions
属性からデータを取得し、JSONからそれを解析し、新しいイメージのアクションのリストにアクションを追加し、次に画像を描画します。
キャンバスにdata-actions='HERE COMES THE JSON WHICH YOU SAVED ON THE SERVER ON DB'
を追加するだけです(例:<canvas id="the_id_of_canvas_here" data-actions='HERE COMES THE JSON WHICH YOU SAVED ON THE SERVER ON DB' width="300" height="300"></canvas>
)。
注:ファイルまたはデータベース内の$_POST["data"]
を保存するとき、この(Fastest way to check if a string is JSON in PHP?とSanitize JSON with php)をサニタイズすることを忘れないでください。
誰でも?どうもありがとうございました! –