좋아요,이 캐릭터가있어서 부드럽게 움직이기를 원합니다. 나는 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 /었던 MovieRight funcitons 때 트리거 그들은 오른쪽 또는 왼쪽 화살표 키를 누릅니다.
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
을 그리고이 일시 정지 기능은 아니지만 어떤 이유로이 경우, 잘 작동합니다. 필자는 Form_KeyDown Select에서 함수가 트리거되기 전에 일시 중지를 시도했습니다. 각 그림이 변경되기 전에 시도 했었습니다. 각 그림이 변경된 후에 시도했지만, MoveRight/MoveLeft에서 선택하기 전에 시도했습니다. 캐릭터가 마치 스프라이트 변경/애니메이션없이 슬라이드하는 것처럼 애니메이션을 만들지 않습니다. 무엇이 문제 일 수 있으며 어떻게 해결할 수 있습니까?
여기에 게시 된 코드와 같이 어떤 멈춤을하는지 궁금하다면, 실제로 빠르게 움직이면 스프라이트가 변경된 것을 볼 수 있지만 애니메이션처럼 보이지만 부드럽 지 않다면 빠르게 진행됩니다.
현재 스프라이트를 저장하려면 레지스트리 ('GetSetting' /'SaveSetting')를 사용해야합니까? 오, 그리고 이미지를로드하고 캐시하고 싶습니다. – Deanna
@Deanna VB6에서 어떻게 이미지를 캐시 할 수 있습니까? – Qasim
'StdPicture' 객체의 배열을 만들고 각각을 배열의 멤버에 할당하십시오. 'RedIm Sprites (5) Index = 0 To 5 스프라이트 (색인) = LoadPicture (App.Path & "\ 이미지 \ 문자 이미지 \ 문자 \ 황혼의 \ sprite_"및 cstr (27 + 색인) & ")를 설정하십시오. gif ") Next' – Deanna