Results 1 to 4 of 4

Thread: Quick question abouit flipping sprites *RESOLVED*

Threaded View

  1. #1

    Thread Starter
    Lively Member H-Zence's Avatar
    Join Date
    Jul 2002
    Posts
    94

    Quick question abouit flipping sprites *RESOLVED*

    Okay guys, can someone tell me how you would flip a sprite (in other words make it facing horizontally the other way)? Here's my code:


    Private picWidth As Single ' Picture width.
    Private picHeight As Single ' Picture height.
    Private Xpos As Single ' Sprite's X position.
    Private Ypos As Single ' Sprite's Y position.
    Private FrameCounter As Integer ' Keep track of the current frame.

    ' Declare the bit block transfer function.
    Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, _
    ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, _
    ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

    Private Sub cmdExit_Click()
    ' Close the form.
    Unload Me
    End Sub

    Private Sub cmdAnimate_Click()
    ' Enable sprite's animation.
    tmrAnimate.Enabled = True
    End Sub

    Private Sub cmdFrames_Click()
    AniSprite ' Set the sprite's frames.
    SetSprite ' Show the sprite.
    End Sub

    Private Sub cmdStop_Click()
    ' Disable sprite's animation.
    tmrAnimate.Enabled = False
    End Sub

    Private Sub picDestination_KeyDown(KeyCode As Integer, Shift As Integer)
    ' Check for keypresses
    Select Case KeyCode
    ' Move left
    Case vbKeyLeft
    'Draw the picture normally (left-facing deer)
    Xpos = Xpos - 5 ' Move X position
    SetSprite ' Draw the sprite
    Exit Sub ' Exit the subroutine

    ' Move right
    Case vbKeyRight
    Xpos = Xpos + 5 ' Move X position
    SetSprite ' Draw the sprite
    Exit Sub ' Exit the subroutine

    ' Move up
    Case vbKeyUp
    Ypos = Ypos - 5 ' Move Y position
    SetSprite ' Draw the sprite
    Exit Sub ' Exit the subroutine

    ' Move down
    Case vbKeyDown
    Ypos = Ypos + 5 ' Move Y position
    SetSprite ' Draw the sprite
    Exit Sub ' Exit the subroutine

    End Select
    End Sub

    Private Sub Form_Load()

    With picMask
    .AutoRedraw = True ' Redraw sprite mask
    .AutoSize = True ' Size to source's size
    .BorderStyle = 0 ' No border
    .ScaleMode = 3 ' Pixels
    .Visible = False ' Invisible
    End With

    With picMan
    .AutoRedraw = True ' Redraw sprite mask
    .AutoSize = True ' Size to source's size
    .BorderStyle = 0 ' No border
    .ScaleMode = 3 ' Pixels
    .Visible = False ' Invisible
    End With

    With picDestination
    .AutoRedraw = True ' Redraw sprite mask
    .AutoSize = True ' Size to source's size
    .ScaleMode = 3 ' Pixels
    End With

    With picSource
    .AutoRedraw = True ' Redraw sprite mask
    .AutoSize = True ' Size to source's size
    .BorderStyle = 0 ' No border
    .ScaleMode = 3 ' Pixels
    .Visible = False ' Invisible
    End With

    FrameCounter = -1 ' Animation has not yet begun, set default

    ' Set picture of sprite
    picMan.Picture = ImageList1.ListImages(1).Picture
    picMask.Picture = ImageList1.ListImages(2).Picture

    ' Set sprite's height and width.
    picWidth = picMan.Width
    picHeight = picMan.Height

    Xpos = 178 ' Sprite's X position
    Ypos = 106 ' Sprite's Y position

    SetSprite ' Show the sprite
    End Sub

    Private Sub tmrAnimate_Timer()
    AniSprite ' Set current frame
    SetSprite ' Display sprite update
    End Sub

    Public Sub AniSprite()
    ' Update sprite frame & redraw.
    FrameCounter = FrameCounter + 2
    If FrameCounter = 5 Then FrameCounter = 1
    picMan.Picture = ImageList1.ListImages(FrameCounter).Picture
    picMask.Picture = ImageList1.ListImages(FrameCounter + 1).Picture
    End Sub


    Public Sub SetSprite()
    picDestination.Cls ' Clear frame and prepare for update.

    ' Move the background to the destination bitmap.
    BitBlt picDestination.hDC, Xpos, Ypos, picWidth, picHeight, _
    picSource.hDC, Xpos, Ypos, vbSrcCopy

    ' Move the mask to the destination bitmap.
    BitBlt picDestination.hDC, Xpos, Ypos, picWidth, picHeight, _
    picMask.hDC, 0, 0, vbMergePaint

    ' Move the sprite to the destination bitmap.
    BitBlt picDestination.hDC, Xpos, Ypos, picWidth, picHeight, _
    picMan.hDC, 0, 0, vbSrcAnd

    picDestination.Refresh ' Refresh the background.
    End Sub


    So for example in the "Case Left" statement, what should I do!
    Thanks in advance to anyone who wants to help this n00b.
    Last edited by H-Zence; Dec 9th, 2002 at 05:01 PM.
    www.mindset1.com
    Religious Debate Forums

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width