Lesson08 マウスを追いかける 解説
このプログラムではページが開くと20行目のプロシジャー Sub Window_OnLoad() が自動的にコールされて起動し
このプロシジャー最終行の tm() が120行目のプロシジャー Sub tm() をコールしてアニメが動き出す。
001:<HTML>
002:<HEAD>
003:<TITLE>Lesson08</TITLE>
004:</HEAD>
005:<BODY BGCOLOR="#98fb98">
006:<IMG SRC="img/ahiru.gif" ID = "idahiru" " Style = "Position:Absolute;Left:10;Top:10">
007:<IMG SRC="img/hiyoko.gif" ID = "idhiyoko3" " Style = "Position:Absolute;Left:40;Top:10">
008:<IMG SRC="img/hiyoko.gif" ID = "idhiyoko2" " Style = "Position:Absolute;Left:70;Top:10">
009:<IMG SRC="img/hiyoko.gif" ID = "idhiyoko1" " Style = "Position:Absolute;Left:100;Top:10">
010:<IMG SRC="img/niwatori.gif" ID = "idniwatori" " Style = "Position:Absolute;Left:140;Top:10">
011:<SCRIPT LANGUAGE="VBScript">
012:<!--
013:Dim tminterval '変数宣言 タイマーの間隔
014:Dim mousex, mousey '変数宣言 mousex:マウスの水平方向位置 mousey:マウスの垂直方向位置
015:Dim niwatorix, niwatoriy '変数宣言 niwatorix:ニワトリの水平方向位置 niwatoriy:ニワトリの垂直方向位置
016:Dim hiyoko1x, hiyoko1y '変数宣言 hiyoko1x:ヒヨコ1の水平方向位置 hiyoko1y:ヒヨコ1の垂直方向位置
017:Dim hiyoko2x, hiyoko2y '変数宣言 hiyoko2x:ヒヨコ2の水平方向位置 hiyoko2y:ヒヨコ2の垂直方向位置
018:Dim hiyoko3x, hiyoko3y '変数宣言 hiyoko3x:ヒヨコ3の水平方向位置 hiyoko3y:ヒヨコ3の垂直方向位置
019:Dim ahirux, ahiruy '変数宣言 ahirux:アヒルの水平方向位置 ahiruy:アヒルの垂直方向位置
020:Sub Window_OnLoad() 'ウインドウ起動時にコールされる このプロシジャーでアニメスタート
021: mousex=500 '初期値設定
022: mousey=200 '初期値設定
023: tminterval = 10 'タイマー値設定
024: tm 'Sub プロシジャー tm() をコール
025:End Sub
026:Sub Document_OnMouseMove() 'ウインドウ上でマウスが動くとコールされる
027: mousex = Window.Event.X '変数mousexにマウスの水平方向位置データ入力
028: mousey = Window.Event.Y '変数mouseyにマウスの垂直方向位置データ入力
029:End Sub
030:Sub niwatori() 'ニワトリを動かす
031:Dim x, y
032: niwatorix=idniwatori.Style.PixelLeft+16 '変数niwatorixにニワトリの水平方向位置データ入力
033: niwatoriy=idniwatori.Style.PixelTop+16 '変数niwatoriyにニワトリの垂直方向位置データ入力
034: x=mousex-niwatorix 'x:ニワトリからマウスまでの水平距離
035: y=mousey-niwatoriy 'y:ニワトリからマウスまでの垂直距離
036: If x>0 And idniwatori.Style.Filter <> "" Then 'リファランス Filter 参照
037: idniwatori.Style.Filter=""
038: ElseIf x<0 And idniwatori.Style.Filter = "" Then
039: idniwatori.Style.Filter="Fliph" 'リファランス Fliph 参照
040: End If
041: If Abs(x)>20 Then '水平距離xの絶対値が20pixel以上の時、ニワトリをマウスに近づける Abs 参照
042: idniwatori.Style.PixelLeft=niwatorix-16+x/32
043: End If
044: If Abs(y)>3 Then '垂直距離xの絶対値が3pixel以上の時、ニワトリをマウスに近づける
045: idniwatori.Style.PixelTop=niwatoriy-16+y/32
046: End If
047:End Sub
048:Sub hiyoko1() 'ヒヨコ1がニワトリを追う
049:Dim x, y
050: hiyoko1x=idhiyoko1.Style.PixelLeft+11
051: hiyoko1y=idhiyoko1.Style.PixelTop+11
052: x=niwatorix - hiyoko1x
053: y=niwatoriy - hiyoko1y
054: If x>0 And idhiyoko1.Style.Filter <> "" Then
055: idhiyoko1.Style.Filter = ""
056: ElseIf x<0 And idhiyoko1.Style.Filter = "" Then
057: idhiyoko1.Style.Filter = "Fliph"
058: End If
059: If Abs(x)>20 Then
06o: idhiyoko1.Style.PixelLeft=hiyoko1x-11+x/20
061: End If
062: If Abs(y)>3 Then
063: idhiyoko1.Style.PixelTop=hiyoko1y-11+y/20
064: End If
065:End Sub
066:Sub hiyoko2() 'ヒヨコ2がヒヨコ1を追う
067: Dim x, y
068: hiyoko2x=idhiyoko2.Style.PixelLeft+11
069: hiyoko2y=idhiyoko2.Style.PixelTop+11
070: x=hiyoko1x - hiyoko2x
071: y=hiyoko1y - hiyoko2y
072: If x>0 And idhiyoko2.Style.Filter <> "" Then
073: idhiyoko2.Style.Filter = ""
074: ElseIf x<0 And idhiyoko2.Style.Filter = "" Then
075: idhiyoko2.Style.Filter = "Fliph"
076: End If
077: If Abs(x)>20 Then
078: idhiyoko2.Style.PixelLeft=hiyoko2x-11+x/15
079: End If
080: If Abs(y)>3 Then
081: idhiyoko2.Style.PixelTop=hiyoko2y-11+y/15
082: End If
083:End Sub
084:Sub hiyoko3() 'ヒヨコ3がヒヨコ2を追う
085: Dim x, y
086: hiyoko3x=idhiyoko3.Style.PixelLeft+11
087: hiyoko3y=idhiyoko3.Style.PixelTop+11
088: x=hiyoko2x - hiyoko3x
089: y=hiyoko2y - hiyoko3y
090: If x>0 And idhiyoko3.Style.Filter <> "" Then
091: idhiyoko3.Style.Filter = ""
092: ElseIf x<0 And idhiyoko3.Style.Filter = "" Then
093: idhiyoko3.Style.Filter = "Fliph"
094: End If
095: If Abs(x)>20 Then
096: idhiyoko3.Style.PixelLeft=hiyoko3x-11+x/10
097: End If
098: If Abs(y)>3 Then
099: idhiyoko3.Style.PixelTop=hiyoko3y-11+y/10
100: End If
101:End Sub
102:Sub ahiru() 'アヒルがヒヨコ3を追う
103: Dim x, y
104: ahirux=idahiru.Style.PixelLeft+14
105: ahiruy=idahiru.Style.PixelTop+14
106: x=hiyoko3x - ahirux
107: y=hiyoko3y - ahiruy
108: If x>0 And idahiru.Style.Filter <> "" Then
109: idahiru.Style.Filter = ""
110: ElseIf x<0 And idahiru.Style.Filter = "" Then
111: idahiru.Style.Filter = "Fliph"
112: End If
113: If Abs(x)>20 Then
114: idahiru.Style.PixelLeft=ahirux-14+x/10
115: End If
116: If Abs(y)>3 Then
117: idahiru.Style.PixelTop=ahiruy-14+y/10
118: End If
119:End Sub
120:Sub tm() '一度コールされると23行目で設定されたタイマー値tmintervalの間隔で働く
121: niwatori '030行目のプロシジャー Sub niwatori() コール:ニワトリがマウスを追う
122: hiyoko1 '048行目のプロシジャー Sub hiyoko1() コール:ヒヨコ1がニワトリを追う
123: hiyoko2 '066行目のプロシジャー Sub hiyoko2() コール:ヒヨコ2がヒヨコ1を追う
124: hiyoko3 '084行目のプロシジャー Sub hiyoko3() コール:ヒヨコ3がヒヨコ2を追う
125: ahiru '102行目のプロシジャー Sub ahiru() コール:アヒルがヒヨコ3を追う
126: SetTimeOut "tm", tminterval 'tminterval(ミリ秒)後に tm プロシジャーをコール Lesson01 解説 SetTimeOut 参照
127:End Sub
128:-->
129:</SCRIPT>
130:<!--Copyright(c) 2002 Animation studio nezus QQQ All rights reserved.-->
131:</BODY>
132:</HTML>
Lesson08 解説 終わり