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 解説 終わり