【5】 画像データの移動(1)
画像の切り替えはそのままで、画像をウィンドウの右側へ移動させる。
画像(オブジェクト)の移動とは、表示位置(座標)を設定するプロパティLocation(またはLeftとTopプロパティ)を変えながら表示させることである。右側への移動とは、水平方向の移動なのでLeftプロパティを変更していくことになる。
画像の現在位置は、ピクチャボックスのLeftプロパティとTopプロパティで調べることができる。X座標は( MainPict.Left )、Y座標は( MainPict.Top )である。
操作 15 Timer1_Tickメソッドに次のようにプログラムを追加する。(下線部)
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Static number As Integer = 1
Static dx As Integer = 10 '移動量(10ピクセル)設定
If number = 0 Then '画像切り替えアニメーションの処理
MainPict.Image = My.Resources.right1
ElseIf number = 1 Then
MainPict.Image = My.Resources.right2
End If
number = number + 1
If number = 2 Then
number = 0
End If
MainPict.Left = MainPict.Left + dx '移動量加算
End Sub
下線部の1行目(移動量設定)を省略して、下線部の2行目を「MainPict.Left = MainPict.Left + 10」としても良いが、次の段階で画像の移動方向を変える予定なので、このようにしている。
操作 16 プログラムを実行する。
実行するとアニメーション(移動)が始まる。クリックするたびに開始と停止を繰り返す。ウィンドウ右側のフレームを超えて移動するので、適当なところでプログラムを終了すること。
移動量を20や50に増やして実行してみよう。
結果→ ( )くなる。
【6】 画像データの移動(2)
画像がウィンドウ左右のフレームに到達したとき、移動方向を逆にするようにする。すなわち、画像がフレームで、はね返るようにする。
移動方向を逆にするためには、移動量を格納している変数dxの正負を入れ替えればよい。式で表すと次のようになる。
dx = ( -1 ) * dx
画像オブジェクトおよびウィンドウ内側の高さと幅の大きさを参照するためのプロパティは図の通りである。
操作 17 Timer1_Tickメソッドに次のようにプログラムを追加する。(下線部)
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Static number As Integer = 1
Static dx As Integer = 10 '移動量(10ピクセル)設定
If number = 0 Then '画像切り替えアニメーションの処理
MainPict.Image = My.Resources.right1
ElseIf number = 1 Then
MainPict.Image = My.Resources.right2
End If
number = number + 1
If number = 2 Then
number = 0
End If
MainPict.Left = MainPict.Left + dx '移動量加算
'フレーム右に到達したとき、(図@)
If MainPict.Left >= Me.ClientSize.Width - MainPict.Width Then
'画像をフレーム右に合わせ、(図@)
MainPict.Left = Me.ClientSize.Width - MainPict.Width
'移動量(方向)を反転する。
dx = -dx '(→ dx = -1 * dx のこと)
'フレーム左に到達したとき、(図A)
ElseIf MainPict.Left <= 0 Then
'画像をフレーム左に合わせ、(図A)
MainPict.Left = 0
'移動量(方向)を反転する。
dx = -dx
End If
End Sub
操作 18 プログラムを実行する。[アニメ]ボタンをクリックする。
実行するとアニメーション(移動)が始まる。クリックするたびに開始と停止を繰り返す。ウィンドウ左右のフレームで移動方向が変わる。
|
|
§6 アニメーション(1)3 |
Copyright©2008 Hiroshi Masuda |