星の移動

星を動かしてるように見せてます。sample-4と違って、星に1つ1つ名前をつけて、その位置を変えてます。IE用です。

これが、あらかじめ用意してある画像です。★

こちらが、サンプルです。

ソース表示です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head>
<META http-equiv="Content-Script-Type" content="javascript">
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<title>JavaScriptの実験・サンプル5・お星様 [その4の応用]</title>
<script type="text/javascript">
<!--
rd=0;
function star(){
var n=0;
for (i=0; i<16; i+=.4){
var s=100;
var x=200+Math.sin(rd*2)*s;
var y=200+Math.cos(rd)*s;
rd+=.15;
var na="im"+n;
document.all(na).style.left=x;
document.all(na).style.top=y;
n++;
}
setTimeout("star()",200);
}
//-->
</script>
</head>
<body style="background-color:black" onLoad="star()">
<script type="text/javascript">
<!--
n=0;
for (i=0; i<16; i+=.4){
x=0; y=0;
c=' name="im'+n+'"';
n++;
v='<img src="image/star_1.png" style="position:absolute; left:'+x+'; top:'+y+'" width="'+i+'"'+c+'>';
document.write(v);
}
//-->
</script>
</body>
</html>

解説です。順番に書いてありますが、流れ的に、BODY内のJavaScriptの後でHEAD内のJavaScriptを見るといいかもしれません。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
HTML4.01Strictという文法でHTMLを書きます。

<html lang="ja"></html>
この中にHTMLを書きます。lang="ja"で、日本語です。

<head></head>
この中に、METAとかJavaScriptの関数とかを書きます。

<META http-equiv="Content-Script-Type" content="javascript">
JavaScriptを使います。

<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
Shift-JISを使います。文字化け対策に書いておきましょう。

<META http-equiv="Content-Style-Type" content="text/css">
スタイルシートを使います。

<title>JavaScriptの実験・サンプル5・お星様 [その4の応用]</title>
タイトルです。なるたけ詳しい方がいいでしょう。

<script type="text/javascript">
<!--
//-->
</script>

この中にJavaScriptを書きます。ここでは、HEADとBODYに書いています。

rd=0;
変数rdに0を代入しています。角度に使ってます。

function star(){
}

関数star()を定義します。

var n=0;
nに0を入れています。名前の番号に使ってます。
その関数内のみでしか使わない変数は、varをつけてローカル変数にすると、他の関数で同じ名前の変数を使ってもごっちゃになりません。

for (i=0; i<16; i+=.4){
}

繰り返し処理です。BODY内のと同じものを使ってますが、iの替わりにnを使い、繰り返す数を調節すれば、短くなります。

var s=100;
Sに100を入れています。大きさに使ってます。大きくすれば、画面いっぱいに広がるでしょう。

var x=200+Math.sin(rd*2)*s;
var y=200+Math.cos(rd)*s;

sin,cosの値にrd(角度に使ってる)をいれて、s(大きさ)をかけて、位置を決めています。sin内のrdに2をかけています。かけないで、sin(rd)にすると、円になります。いろいろいじくると、いろんな形になります。本当はsinやcosに入れるのは、角度*π/180です。それは、下のサンプルで。

rd+=.15;
角度に0.15を足しています。これが、このプログラムのいいかげんなトコです。こーすると、とりあえず、順番に動いているように見えます。他の数字だと、流れ(?)が変わります。
少しマシにしたサンプルです。

var na="im"+n;
名前を作っています。im0,im1〜と続きます。

document.all(na).style.left=x;
document.all(na).style.top=y;

na(名前)のleft(横位置),top(縦位置)に、さっき作ったx,yを入れています。
all(na)とするところが、ポイントです。直接、document.na.style.leftなどとやってもうまくいきませんので、変数を使うときは、all()に入れておきます。
名前を使わない場合は、images[]配列を使います。

n++;
名前nに+1しています。

setTimeout("star()",200);
0.2秒ごとにこの関数を呼び出して、ずっと繰り返します。
すると、rdが増え続けてエラーになると思いますが、計算はしてないけど、何日も何年もかかると思いますので、エラー回避はつけてないです。気になる方は、if (rd>=360) rd=0; とか、つけてください。

<body style="background-color:black" onLoad="star()"></body>
style="background-color:black" で、背景を黒にしています。
onLoad="star()" で、ロード時(HTMLを読みこんだ時)に、star()を呼び出します。

n=0;
変数nを0にしています。名前に使ってます。

for (i=0; i<16; i+=.4){
}

繰り返しています。

x=0; y=0;
始めの位置です。

c=' name="im'+n+'"';
name(名前)を作っています。im0,im1,...となります。
id=でも動きます。

n++;
nを+1しています。

v='<img src="image/star_1.png" style="position:absolute; left:'+x+'; top:'+y+'" width="'+i+'"'+c+'>';
v='<img src="image/star_1.png" でファイル名を指定しています。
style="position:absolute; で、位置を絶対位置の指定にしてます。styleは、positionを決めないと、表示されないことがあります。
left:'+x+'; top:'+y+'" 始めの位置ですけど、left:0; top;0 としても同じです。
width="'+i+'"' 大きさ(幅)を決めています。height(高さ)をつけるのもいいですね。
+c+'>'; 名前です。

document.write(v);
上で作ったvをHTMLとして書いてます。変数vを使わずに直接document.write内に書いてもいいです。


Next : 次のサンプルへ
Rev  : 前のサンプルへ
 Up  : JavaScript-Sampleに戻る
Home : ホームに戻る

Presented by Rei

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル