みなさんこんにちは。 数日前、私は偶然にSpace Rangers 2:Disk DepositsのDominatorsを偶然見つけました。 インストールしなかったのは、今では適切に突っ込むのに十分な時間がないからです。 ディスクの内容を確認することにしました。 私はファンアートを見て、そこでレンジャーリソースを選ぶためのプログラムを見ました。 そこで、私たちの支配者が何でできているのかを見ることにしました。 少しクリックすると、アニメーションがGAI形式のファイルが見つかりました。 私はそのアニメーションを賞賛し始めました。 私はそれらを「gif」で保存したかったのですが、どうしてそのプログラムはアニメーションを保存させなかったのでしょうか? 現在のフレームまたはすべてのファイルをPNGで保存できます。 すべてのフレームを保存することにしましたが、それらは150個ありましたが、まだ写真があり、同じアニメーションを作成してみませんか。
スプライト
このようなアニメーションに満足するために、CSS + JSを手伝いました。 150個の画像ファイルをどうすればよいですか? それらの重量は合計1メガバイト以上ですが、重要ではありません。 同時読み込みと操作の主な問題。 したがって、それらを1つに「接着」することにしました。 ロードは1つだけで、CSS + JSを使用すると、正しく配置するだけで済みます。
「接着」の方法を選択する必要があります。 私はプログラマーであり、私たちはみんな怠け者です:)ので、グラフィカルエディターでの手動の接着はすぐに破棄しました。 私が最初にしたことは、いつものように、PHPとGDライブラリに急いで行きました。 しかし、半透明のPNGを使用するためには、多くのことが望まれます。 それから私は、他に何が写真を「接着」できるのかと考えました。 そして、彼は今、誰もが今流行していると考えられているもの、HTML5を聞いているという事実に留まりました。 彼はグラフィックス-Canvasを扱う責任があり、この「おいしい」が本当に好きです。 だからこそ、「キャンバス」に「接着」することにしました。
そして、このタグをHTMLに追加します。
<canvas id="sprite"> </canvas>
JSでは、写真の名前、最初の写真、最後の写真の番号のマスクを示します(すべての写真が順番どおりになるため、写真の名前を変更する必要はありませんでした)。 次のようになります。
var first = '000';
これで、判明するスプライトのサイズを指定して、そのコンテキストを取得できます。
var canvas = document.getElementById("sprite");
数値から文字列への変換を容易にするため(PHPのstr_padのアナログ)、zerofikator()というワイルドネームを使用してコンバーター関数を作成しました。
function zerofikator(int, length) {
さらに、「キャンバス」に絵を描くために、つまり スプライトを作成します。ここにそのような単純な関数があります:
function draw() { var img = document.createElement('img'); img.onload = function () {
このようなページを起動すると、フレームごとに幅の広い画像が表示されます。保存した場合、それをスプライトと呼ぶことができます。 ちなみに、保存されたスプライトの重量は615 KBで、150枚の画像は1,189 KBです、うーん、もう1つプラスです:)。
キャンバスをクリックして、すぐにファイルに変換を追加することにしました(一部のブラウザーの保存の問題を解決します)。
canvas.onclick = function () { window.location = context.canvas.toDataURL('image/png'); };
デモアニメーション
さて、今、あなたはアニメーションを開始することができます。
HTMLでは、引き続き作業を続けるためのいくつかの「仕切り」を追加します。
<div id="gun"></div> <div id="ship"></div>
次に、スプライトをアニメーション化する関数を作成しましたが、一度に複数のアニメーションに使用できるように、設定を個別に行うことにしました。
var styles = {}; styles.cursor = 'pointer';
そして、関数自体:
function spriteAnimation(elementId, imgName, styles) { var img = document.createElement('img'); var offset = 0; img.onload = function () {
そうです、まだこの関数を呼び出す必要があります。
spriteAnimation(elementId, imgName, styles); spriteAnimation('ship', 'ship.png', styles);
そして、その場所を見るために、背景付きの画像を追加して、正しく配置することができます:
<img src="fon.png" /> <div class="conteiner"><div id="gun"></div></div>
デモソースコード彼らが言うように-「ちょうど楽しみ」。 そして、雨の多い秋の夜にどのように時間を過ごしますか?