js版マリオのソース解析したところ画像ファイルが見つかりませんでした。

一体どうなっているのですか?

js版マリオ
http://www.nihilogic.dk/labs/mario/mario_large_music.htm

回答の条件
  • 1人20回まで
  • 登録:2014/04/20 21:23:29
  • 終了:2014/04/21 19:42:46

ベストアンサー

id:language_and_engineering No.2

lang_and_engine回答回数170ベストアンサー獲得回数632014/04/21 15:41:53

ご指摘の通り,画像部分はBASE64エンコードではなく,canvasへの独自データの描画でした・・・。

以下は詳細です。


Canvas要素を作っている関数。
一つ一つのキャラクターなど個別の動く要素を生みだしている。

>B=function(Ap,Ao,Aq,Al,An,Am){
>・・・
>var i=S("canvas");・・・i.getContext("2d").drawImage(Am,0,0)}



画像データを独自形式で格納している配列変数。

>AC=['・・・

APを介して変数zに格納。

>z=["",AP([5,4,0,3],AC[0]),AP([3,4,5,0],AC[1]),

APの中では,引数を独自解釈してcanvasで返している。

>AP=function(Am,i,c){var Ao=M(i);if(d){var Aq=S("canvas");var An=Aq.getContext("2d");var Ar=Aq.style;Ar.position="absolute";Ar.left=Ar.top=0;Ar.width=Ar.height=Aq.width=Aq.height=C;if(f[Am[0!=""){An.fillStyle="#"+f[Am[0;An.fillRect(0,0,C,C)}b(Am,Ao,An,c);return Aq}

id:rumani

回答ありがとうございます!

しかしブラウザーでマリオができるとは昔は夢にも思っていませんでした。
技術の進歩って凄いですよね。

2014/04/21 19:42:31

その他の回答(1件)

id:language_and_engineering No.1

lang_and_engine回答回数170ベストアンサー獲得回数632014/04/21 12:54:07

BASE64エンコードして埋め込んでいます。

画像ファイルを,HTMLファイル内に埋め込み,1ファイルに統合する (BASE64を使ってファイル数を減らす方法)
http://d.hatena.ne.jp/language_and_engineering/20140211/p1

id:TransFreeBSD

dataスキームじゃなくてcanpas要素で独自エンコードっぽいですよ。

2014/04/21 13:40:39
id:language_and_engineering

うわー。すみません。

ソース内を見ると,dataエンコードは実際に使われていましたが,
画像ではなく,MIDI音楽の部分でしたね。

>data:audio/mid;base64


画像についてはもう一つ別の回答に投稿いたします。

2014/04/21 15:39:32
id:language_and_engineering No.2

lang_and_engine回答回数170ベストアンサー獲得回数632014/04/21 15:41:53ここでベストアンサー

ご指摘の通り,画像部分はBASE64エンコードではなく,canvasへの独自データの描画でした・・・。

以下は詳細です。


Canvas要素を作っている関数。
一つ一つのキャラクターなど個別の動く要素を生みだしている。

>B=function(Ap,Ao,Aq,Al,An,Am){
>・・・
>var i=S("canvas");・・・i.getContext("2d").drawImage(Am,0,0)}



画像データを独自形式で格納している配列変数。

>AC=['・・・

APを介して変数zに格納。

>z=["",AP([5,4,0,3],AC[0]),AP([3,4,5,0],AC[1]),

APの中では,引数を独自解釈してcanvasで返している。

>AP=function(Am,i,c){var Ao=M(i);if(d){var Aq=S("canvas");var An=Aq.getContext("2d");var Ar=Aq.style;Ar.position="absolute";Ar.left=Ar.top=0;Ar.width=Ar.height=Aq.width=Aq.height=C;if(f[Am[0!=""){An.fillStyle="#"+f[Am[0;An.fillRect(0,0,C,C)}b(Am,Ao,An,c);return Aq}

id:rumani

回答ありがとうございます!

しかしブラウザーでマリオができるとは昔は夢にも思っていませんでした。
技術の進歩って凄いですよね。

2014/04/21 19:42:31

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません