さて、私はこのキャラクターを持っていて、スムーズに動かしたいと思っています。私はそれが6つのスプライトで給電アニメーションを歩いていていて、これはアニメーションは、今機能している方法です。VB6でこの文字を円滑にアニメーション化するには
はまず、私は、KeyDownイベントのサブを持っている:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
...
Select Case KeyCode
Case vbKeyLeft: 'move left
MoveLeft Character, Speed
Case vbKeyRight: 'move right
MoveRight Character, Speed
Case vbKeyUp: 'jump
Jump Character
Case vbKeyDown:
Duck Character
End Select
...
End Sub
を選択し、その後MoveLeft/MoveRightつくときトリガー彼らは右または左の矢印キーを押す。
Public Function MoveRight(Character As Image, Speed As Integer)
SaveSetting "MLP", "Game", "direction", "right"
Character.Left = Character.Left + Speed
Select Case GetSetting("MLP", "Game", "right_animation", 0)
Case 0:
Character.Picture = LoadPicture(App.Path & "\images\characters\" & GetSetting("MLP", "Game", "pony", "twilight") & "\sprite_27.gif")
SaveSetting "MLP", "Game", "right_animation", 1
Case 1:
Character.Picture = LoadPicture(App.Path & "\images\characters\" & GetSetting("MLP", "Game", "pony", "twilight") & "\sprite_28.gif")
SaveSetting "MLP", "Game", "right_animation", 2
Case 2:
Character.Picture = LoadPicture(App.Path & "\images\characters\" & GetSetting("MLP", "Game", "pony", "twilight") & "\sprite_29.gif")
SaveSetting "MLP", "Game", "right_animation", 3
Case 3:
Character.Picture = LoadPicture(App.Path & "\images\characters\" & GetSetting("MLP", "Game", "pony", "twilight") & "\sprite_30.gif")
SaveSetting "MLP", "Game", "right_animation", 4
Case 4:
Character.Picture = LoadPicture(App.Path & "\images\characters\" & GetSetting("MLP", "Game", "pony", "twilight") & "\sprite_31.gif")
SaveSetting "MLP", "Game", "right_animation", 5
Case 5:
Character.Picture = LoadPicture(App.Path & "\images\characters\" & GetSetting("MLP", "Game", "pony", "twilight") & "\sprite_32.gif")
SaveSetting "MLP", "Game", "right_animation", 0
End Select
End Function
両方の機能が同一であるため、どちらか一方の機能だけです。ここでは、100MSの遅延を追加したいと思います。私は見つけたポーズ機能を持っています:
Public Function Pause(Milliseconds As Single)
Dim T As Single, t2 As Single
T = GetTickCount(): t2 = GetTickCount()
Do Until t2 - T >= Milliseconds
t2 = GetTickCount(): Sleep 1: DoEvents
Loop
End Function
このポーズ機能は素晴らしいですが、この場合何らかの理由で機能しません。 Iveは、機能がForm_KeyDown Selectでトリガされる前に一時停止を試みました。各ピクチャが変更される前に試してみました。各ピクチャが変更された後に試しました。MoveRight/MoveLeftで選択する前に試しました。スプライトの変更やアニメーションを行わずに文字だけをスライドさせるようなアニメーションはありません。何が問題になる可能性があり、どうすればこの問題を解決できますか?
私がここに投稿したコードのように、何もしないのが不思議であれば、それは動くが、本当に速く、スプライトの変化に気づくことができ、アニメーションに見えるが滑らかではない。
レジストリ( 'GetSetting' /' SaveSetting')を使って現在のスプライトを保存する必要がありますか?ああ、あなたはイメージをロードしてキャッシュしたいと思っています。 – Deanna
@Deanna VB6でどのように画像をキャッシュすることができますか? – Qasim
'StdPicture'オブジェクトの配列を作成し、それぞれを配列のメンバに割り当てます。 'RedIm Sprites(5) Index = 0 To 5 Sprites(Index)= LoadPicture(App.Path&" \ images \ charactersmages \ characters \ twilight \ sprite_ "&cstr(27 + Index)&"を設定します。 gif ") Next' – Deanna