§6 アニメーション(1)3 プログラミング実習
 back next 

【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 プログラムを実行する。[アニメ]ボタンをクリックする。

結果 実行するとアニメーション(移動)が始まる。クリックするたびに開始と停止を繰り返す。ウィンドウ左右のフレームで移動方向が変わる。


 back next 
 §6 アニメーション(1)3 Copyright©2008 Hiroshi Masuda 

 

 

inserted by FC2 system