上下左右に画像を流す JavaScript
|
戻 る |
* 動きの基本は上下と左右の移動で、サインカーブの横揺れを伴い流れて行きます。 * 画面をはずれると逆サイドから、速さや振れ幅等が変わった画像が流れ始めます。 その時、画像の切り替えが出来ます。 また、全部描写と、一つの画像を残し画像の表示と非表示の交互描写の、選択が出来ます。 * 数値の設定だけで、画像の種類毎に、画像の指定や、動きの調整が出来ます。 * スクロールに対応・非対応を選択出来ます。 * Internet Explorer 6 および Netscape 7 で動作確認しています。
「入力事項」の部分で、色に合わせて、次の設定をします。 太字は入力可能場所。 ■ その画像の進行方向を、指示に従い、0〜3 の数字 で指定します。 ■ その画像の表示範囲の、画面上端から、左端からの距離(px) を指定します。 ■ その画像の表示範囲の、幅、高さ(px) を指定します。 「0」を指定すると、幅は画面右端まで、高さは画面下端まで表示されます。 ■ 画像が上下左右に進む 平均的な速さ を入力します。(大きいほど速い) ■ 画像の進む方向と直角に揺れる幅を入力します。(大きいほど揺れも大きい) 「0」を入れると、まっすぐ進みます。 ■ 画像の進む方向と直角に揺れる速さを入力します。(大きいほど速く揺れる) ■ 「0」から順に表示したい数の画像を、アドレスを含むファイル名で指定します。 画像を2つ以上指定すると、反復する度に画像がに変わり、指定順に繰り返します。 ■ 画面に同時に出したい画像数を入力します。 ■ 途中で流れる画像を1個だけにするなら 1 を指定。 (この時、1つ表示される画像は ugoku[0] で指定した画像になります。) ずっと指定数の画像を表示するなら -1 を指定。 ■ 画面をスクロールさせた時、画像も同時にスクロールさせたいので 1 を指定。 ■ 動きの全体の速さを入力します。(大きいほど速いが、負担大) // ***************************** 入力事項 ****************************** // ======= 入力1:画像の種類と流れる方向,流れ方,および範囲 // 1番目の数字で画像の動く方向を指定する。 // 0:左→右 1:右→左 2:上→下 3:下→上 // 2〜3番目の数字で表示範囲の画面「上」・「左」からの各距離( pix )を入力 // 4〜5番目の数字で「表示幅」と「表示高さ」( pix )を入力 // 「 0 」の場合はそれぞれ、画面右端まで、下端まで表示する。 // 6番目の数字で、移動の方向の最大速さを入力(大きい程速い 目安値 30) // 7番目の数字で、揺れの方向の最大幅をピクセル値で入力(目安値 30) // 8番目の数字で、揺れの方向の最大速さを入力(大きい程,早く荒い 目安値 10) // 9番目以降で、出したい画像の種類を、0から順に必要数だけ入力 // 画像が2つ以上あるときは、流れ出す度に、画像が変わる。 ugoku[0]=new Array(0, 0,0, 0,0, 30, 30,10, "../parts/ga1.gif", "../parts/ga5.gif", "../parts/ga9.gif"); ugoku[1]=new Array(1, 0,0, 0,0, 30, 30,10, "../parts/ga2.gif", "../parts/ga6.gif", "../parts/gaa.gif"); ugoku[2]=new Array(2, 0,0, 0,0, 30, 30,10, "../parts/ga3.gif", "../parts/ga7.gif", "../parts/gab.gif"); ugoku[3]=new Array(3, 0,0, 0,0, 30, 30,10, "../parts/ga4.gif", "../parts/ga8.gif", "../parts/gac.gif"); // ======= 入力2:補助入力事項 var no = 8 ; // 画面に同時に出す画像数を入力 var hsw = 1 ; // 途中で流れる画像を1個だけするか?( yes=1 , no=-1 ) // 1個表示されるのは、ugoku[0]で指定した画像です。 var srl = 1 ; // 画像も同時にスクロールさせるか? ( yes=1 , no=-1 ) // 以上の調整で、速さが足りない(荒い)場合は、次の数値を大きくする var chg = 10 ; // 一秒当たりの描画の切替え回数(初期値 10) // *************************** 入力事項ここまで **************************
・05/01/09 ver 3.10 Internet Explorer 6 および Netscape 7 に対応 ・05/01/07 ver 3.00 画像の切り替え可能。表示非表示交互描写可能。他 ・04/04/04 ver 2.20 スクロールの対応を選択可にする。 ・04/04/02 ver 2.10 スクロールに即時対応。 内部構造の簡潔化。 ・04/03/31 ver 2.00 画像の種類毎に、移動範囲を設定可能にした ・03/02/04 ver 1.10 表示の更新 ・02/11/20 ver 1.00 IE専用化・スクロールに対応・表示範囲を設定可能に更新 ・02/11/14 ver 0.00 初 公 開
<script type="text/javascript"> <!--// mov_hv ver3.11 (ぱーぷりんの溜まり場) ugoku=new Array(); // この行は触らないで・・ // ***************************** 入力事項 ****************************** // ======= 入力1:画像の種類と流れる方向,流れ方,および範囲 // 1番目の数字で画像の動く方向を指定する。 // 0:左→右 1:右→左 2:上→下 3:下→上 // 2〜3番目の数字で表示範囲の画面「上」・「左」からの各距離( pix )を入力 // 4〜5番目の数字で「表示幅」と「表示高さ」( pix )を入力 // 「 0 」の場合はそれぞれ、画面右端まで、下端まで表示する。 // 6番目の数字で、移動の方向の最大速さを入力(大きい程速い 目安値 30) // 7番目の数字で、揺れの方向の最大幅をピクセル値で入力(目安値 30) // 8番目の数字で、揺れの方向の最大速さを入力(大きい程,早く荒い 目安値 10) // 9番目以降で、出したい画像の種類を、0から順に必要数だけ入力 // 画像が2つ以上あるときは、流れ出す度に、画像が変わる。 ugoku[0]=new Array(0, 0,0, 0,0, 30, 30,10, "../parts/ga1.gif", "../parts/ga5.gif", "../parts/ga9.gif"); ugoku[1]=new Array(1, 0,0, 0,0, 30, 30,10, "../parts/ga2.gif", "../parts/ga6.gif", "../parts/gaa.gif"); ugoku[2]=new Array(2, 0,0, 0,0, 30, 30,10, "../parts/ga3.gif", "../parts/ga7.gif", "../parts/gab.gif"); ugoku[3]=new Array(3, 0,0, 0,0, 30, 30,10, "../parts/ga4.gif", "../parts/ga8.gif", "../parts/gac.gif"); // ======= 入力2:補助入力事項 var no = 8 ; // 画面に同時に出す画像数を入力 var hsw = 1 ; // 途中で流れる画像を1個だけするか?( yes=1 , no=-1 ) // 1個表示されるのは、ugoku[0]で指定した画像です。 var srl = 1 ; // 画像も同時にスクロールさせるか? ( yes=1 , no=-1 ) // 以上の調整で、速さが足りない(荒い)場合は、次の数値を大きくする var chg = 10 ; // 一秒当たりの描画の切替え回数(初期値 10) // *************************** 入力事項ここまで ************************** // 共通変数・配列の設定 var off_w, off_h, doc_x, doc_y; dgr=new Array(); xza=new Array(); yza=new Array(); amp=new Array();stz=new Array(); sdg=new Array(); muki=new Array(); img_w=new Array(); img_h=new Array(); marg_t=new Array(); marg_l=new Array(); disp_w=new Array(); disp_h=new Array(); Gy=new Array(); Gx=new Array(); Gp=new Array(); // 初期値の設定 ingN=0; dpsw=1; prima=-1; for(i=0; i<no; i++){ Gy[i]=ingN; Gx[i]=ugoku[ingN].length; Gp[i]=8; document.write("<div id='dot"+i+"' style='position:absolute; z-index:50'>" +"<img src='"+ugoku[ingN][8]+"' id='img"+i+"'></div>") dgr[i]=Math.random()*6.24; muki[i] =ugoku[ingN][0]; marg_t[i]=ugoku[ingN][1]; marg_l[i]=ugoku[ingN][2]; disp_w[i]=ugoku[ingN][3]; disp_h[i]=ugoku[ingN][4]; prim(); xza[i]=marg_l[i]+amp[i]+Math.random()*(disp_w[i]-2*amp[i]-img_w[i]); yza[i]=marg_t[i]+amp[i]+Math.random()*(disp_h[i]-2*amp[i]-img_h[i]); if(ingN==[ugoku.length]-1){ ingN=0 } else{ ingN++ } } Zahyo(); // メインルーチン function Zahyo(){ brSize(); for(i=0; i<no; ++i){ dgr[i]+=sdg[i]; if(muki[i]<2){ xza[i]+=stz[i] } else{ yza[i]+=stz[i] } if( xza[i]>marg_l[i]+disp_w[i]-img_w[i] || xza[i]<marg_l[i] || yza[i]>marg_t[i]+disp_h[i]-img_h[i] || yza[i]<marg_t[i]) { prim(); if(muki[i]==0){ xza[i]=marg_l[i]; yza[i]=marg_t[i]+amp[i]+Math.random()*(disp_h[i]-2*amp[i]-img_h[i]) } if(muki[i]==1){ xza[i]=marg_l[i]+disp_w[i]-img_w[i]; yza[i]=marg_t[i]+amp[i]+Math.random()*(disp_h[i]-2*amp[i]-img_h[i]) } if(muki[i]==2){ yza[i]=marg_t[i]; xza[i]=marg_l[i]+amp[i]+Math.random()*(disp_w[i]-2*amp[i]-img_w[i]) } if(muki[i]==3){ yza[i]=marg_t[i]+disp_h[i]-img_h[i]; xza[i]=marg_l[i]+amp[i]+Math.random()*(disp_w[i]-2*amp[i]-img_w[i]) } } if(muki[i]==0 || muki[i]==1){ Disp("dot"+i, off_w+xza[i], off_h+yza[i]+amp[i]*Math.sin(dgr[i])) } else{ Disp("dot"+i, off_w+xza[i]+amp[i]*Math.sin(dgr[i]), off_h+yza[i]) } } setTimeout("Zahyo()",1000/chg) } // 初期データ発生 function prim(){ brSize(); if (hsw>0){ if(prima>0 && i==0){ if(dpsw>0){ visi="hidden"; dpsw=-1 } else{ visi="visible"; dpsw=1 } for(k=1; k<no; k++){ document.getElementById("dot"+k).style.visibility=visi } } }; prima=1; document.getElementById("img"+i).src=ugoku[Gy[i]][Gp[i]]; Gp[i]++; if(Gp[i]>=Gx[i]){ Gp[i]=8 } img_h[i]=document.getElementById("img"+i).height; img_w[i]=document.getElementById("img"+i).width; if(disp_w[i]==0){disp_w[i]=doc_x-marg_l[i]}; if(disp_h[i]==0){disp_h[i]=doc_y-marg_t[i]}; amp[i]=(0.2+Math.random()*0.8)*ugoku[Gy[i]][6]; sdg[i]=(0.3+Math.random())*ugoku[Gy[i]][7]/100; stz[i]=(0.7+Math.random())*ugoku[Gy[i]][5]/10; if(muki[i]==1 || muki[i]==3){ stz[i]=-stz[i] } } // ブラウザのサイズを調べる function brSize(){ if(document.all){ doc_x=document.body.clientWidth; doc_y=document.body.clientHeight; off_w=document.body.scrollLeft; off_h=document.body.scrollTop } else if(document.getElementById){ doc_x=window.innerWidth; doc_y=window.innerHeight; off_w=window.scrollX; off_h=window.scrollY } if(srl < 0){ off_w=0; off_h=0 } } // 画像を移動する function Disp(num,xx,yy){ document.getElementById(num).style.left=xx; document.getElementById(num).style.top =yy } // --> </script>