« Imageボタンを作成する | メイン | 外部の画像ファイルを使用する »

フォーム上のオブジェクトを動かす

最近のピンボール関連で、動かす技術を使用していますので、Tipsにもカキコミます。
是非試してみてくださいね。
まずはサンプルです。
下の動くオブジェ.xlsをクリックしてください。エクセル直貼りですので、すぐに起動します。
フォームが現れたら、お好きな場所をクリックしてください。
その場所に向かってイメージが動きます。
作り方です。
useform.gif
図のようにユーザーフォーム(UserForm1)にイメージ(Image1)を置きます。
フォームのコードとして下記のマクロを記述します。
適当にフォームをクリックしてみてください。


Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

With Me.Image1

anchor:
If Abs(Y - .Top) < 0.5 Then Exit Sub
If Abs(X - .Left) < 0.5 Then Exit Sub

If Y = .Top And X = .Left Then Exit Sub

th = Application.WorksheetFunction.Atan2(X - .Left, Y - .Top)

.Top = .Top + Sin(th)
.Left = .Left + Cos(th)

ix = 0
Do While ix < 50
ix = ix + 1
DoEvents
Loop

GoTo anchor

End With

End Sub

Atan2は現在のImage1(の左上)から、クリックしたポイントまでの角度を求めるものです。
thにはラジアンが返ってきます。
さらに三角関数を使用して、x座標、y座標の増減量を割り出し、オブジェクトの.topと.leftに加算します。
DoEventsは処理を解放するもので、これを行わないと途中の描画ができません。

※mousedownイベントのコードが終了ぜずに、DoEventsを使用していますので、
別のmousedownイベントが発生したりすると、予期しないエラーが起こる場合があります。
ゲームなどに使用する場合は、もうすこし工夫が必要かも。

ひとつ前の投稿は「Imageボタンを作成する」です。
次の投稿は「外部の画像ファイルを使用する」です。

トラックバック

このエントリーのトラックバックURL:
http://www.xillion.net/mova/mt-tb.cgi/83

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2004年07月04日 00:00に投稿されたエントリーのページです。

メインページアーカイブページも見てください。

Powered by
Movable Type 3.34