Link to home
Start Free TrialLog in
Avatar of thundergust
thundergust

asked on

Picturebox array & flash movie

i am a beginner in vb and currently working on the game "battleship." I have made 100 picturebox arrays called ComShip(x). How would i make it so that by clicking on a SPECIFIC picturebox (eg. comship(2)), THAT picturebox would display an image. Currently, when i click on ANY of the pictureboxes, the image still shows up on the specified picturebox, but that's not what i want. Is there something i can fix, such as

          Private Sub comship(2)_Click(Index As Integer)        
       instead of the normal          Private Sub comship_Click(Index As Integer)


I also have tried to put a flash movie(.swf) instead of an image, but to no avail. Do I have to add the shockwave flash movie box separately, or can i create one when a picturebox is clicked?

Please help me since i am new to this.
Thank you.
Avatar of Dang123
Dang123

thundergust,
    If you have ComShip as an array of 100 picture boxes, this should load a picture into the clicked one.

Private Sub ComShip_Click(Index As Integer)
    ComShip(Index).Picture = LoadPicture("C:\boat.bmp")
End Sub

Dang123

Here is a sample of working with a flash movie.

http://www.freevbcode.com/ShowCode.Asp?ID=1443

Dang123

Avatar of thundergust

ASKER

i meant by clicking a specific picturebox, that picturebox will play a flash movie or image inside it. I do not want to click on any picturebox and the image still shows up.
thundergust,
    Sorry, I guess I misunderstood you. After playing with the sample in the link I provided above, it looks like you would need to do one of two things. Put a flash movie player in each picture box, or replace the picture boxes with flash movie player controls. I was able to use the sample to create two flash movie players running at the same time, though performance was starting to become an issue.

    Because of the performance, you may want to use a picture box array. When one member is clicked, hide it and set the flash movie player to occupy the exact same place. Show your bomb exploding in the water or on a boat or what ever then hide the flash movie player and show the picture box again with a different picture in it.

    Let me know how you want to proceed, the sample in the link above should show you most of what you need to know about working with the flash movie.

    By the way, an image control takes less resources than a picturebox control; I would suggest using that if you just want to show pictures on the screen.

Dang123

Hi,

Take a look at this, this will get you on your way:

Visual Basic Source Codes:

Private Sub Form_Load()
    SWFlash.Movie = App.Path & "\Movie1.swf"
    SWFlash.Menu = False        'I don't want to see Flash Player Menu
End Sub

Private Sub SWFlash_FSCommand(ByVal command As String, ByVal args As String)
   
    If command = "ButtonClick" Then
        Select Case args
           
            Case "cmdBack": SWFlash.Back        'For Moving to Next Scene
            Case "cmdNext": SWFlash.Forward     'For Moving to Back Scene
           
            'Buttons on 2nd Scene
            Case "Page2.Command1": MsgBox "Command Button 1 Clicked.", vbInformation
            Case "Page2.Command2": MsgBox "Command Button 2 Clicked.", vbInformation
           
            'Buttons of Page3
            'Stop and Play a Movie Clip.
            'For Entrire Movie Play and Stop, Use Play and PlayStop Methods
            Case "Page3.cmdStop": SWFlash.TStopPlay "FishMovie"
            Case "Page3.cmdPlay": SWFlash.TPlay "FishMovie"
           
            'Buttons of Page4
            'SEtting and Getting Variable Values
            Case "Page4.ShowValue"
                Dim mVar As String
                On Local Error Resume Next      'There may be null value
                mVar = SWFlash.GetVariable("txtToGet")
                MsgBox "Text box Value is """ & mVar & """"
            Case "Page4.SetValue"
                mVar = InputBox("Enter Some Value.")
                If mVar <> "" Then _
                    SWFlash.SetVariable "txtToSet", mVar
           
            'Buttons of Page5
            'SEtting and Getting Object Properties
            ' 0 For X Pos
            ' 1 For Y Pos
            ' 2 and 8 For Rotate Horizantaly
            ' 3 and 9 For Rotate Vartically
            ' 6 For Alpha
            ' 10 For Rotations Clockwise/AntiClockwise
            ' 11 For Getting Object Name
            ' 15 Gives Movie Files Path (.swf)
            ' 19 For Quality
           
            Dim lVal As String
            'Move Up
            Case "Page5.cmdUp"
                lVal = SWFlash.TGetProperty("MyBall", 1)
                SWFlash.TSetProperty "MyBall", 1, CStr(CLng(lVal) - 5)
            'Move Down
            Case "Page5.cmdDown"
                lVal = SWFlash.TGetProperty("MyBall", 1)
                SWFlash.TSetProperty "MyBall", 1, CStr(CLng(lVal) + 5)
            'Move Left
            Case "Page5.cmdLeft"
                lVal = SWFlash.TGetProperty("MyBall", 0)
                SWFlash.TSetProperty "MyBall", 0, CStr(CLng(lVal) - 5)
            'Move Right
            Case "Page5.cmdRight"
                lVal = SWFlash.TGetProperty("MyBall", 0)
                SWFlash.TSetProperty "MyBall", 0, CStr(CLng(lVal) + 5)
           
           
            'Rotate Clockwise
            Case "Page5.cmdRotateDown"
                lVal = SWFlash.TGetProperty("MyBall", 10)
                SWFlash.TSetProperty "MyBall", 10, CStr(CLng(lVal) + 5)
               
            'Rotate AntiClockwise
            Case "Page5.cmdRotateUp"
                lVal = SWFlash.TGetProperty("MyBall", 10)
                SWFlash.TSetProperty "MyBall", 10, CStr(CLng(lVal) - 5)
               
            'Shrink Object Inside
            Case "Page5.cmdShrinkH"
                lVal = SWFlash.TGetProperty("MyBall", 8)
                SWFlash.TSetProperty "MyBall", 8, CStr(CLng(lVal) - 5)
            'Shrink Object OutSide
            Case "Page5.cmdDeShrinkH"
                lVal = SWFlash.TGetProperty("MyBall", 8)
                SWFlash.TSetProperty "MyBall", 8, CStr(CLng(lVal) + 5)
               
            'Shrink Object Inside Vertically
            Case "Page5.cmdDeShrinkV"
                lVal = SWFlash.TGetProperty("MyBall", 9)
                SWFlash.TSetProperty "MyBall", 9, CStr(CLng(lVal) + 5)
               
            'Shrink Object Inside Vertically
            Case "Page5.cmdShrinkV"
                lVal = SWFlash.TGetProperty("MyBall", 9)
                SWFlash.TSetProperty "MyBall", 9, CStr(CLng(lVal) - 5)
               
           
            'Set the Alpha Value of the Object
            Case "Page5.cmdAlphaUp"
                lVal = SWFlash.TGetProperty("MyBall", 6)
                If CInt(lVal) < 100 Then    'Max Value for Alpha is 100
                    SWFlash.TSetProperty "MyBall", 6, CStr(CLng(lVal) + 5)
                    'Set New Alpha to the TextBox (In Flash Movie named txtAlpha)
                    SWFlash.SetVariable "txtAlpha", CStr(CLng(lVal) + 5)
                End If
            Case "Page5.cmdAlphaDown"
                lVal = SWFlash.TGetProperty("MyBall", 6)
                If CInt(lVal) > 0 Then    'Min Value for Alpha is 0
                    SWFlash.TSetProperty "MyBall", 6, CStr(CLng(lVal) - 5)
                    'Set New Alpha to the TextBox (In Flash Movie named txtAlpha)
                    SWFlash.SetVariable "txtAlpha", CStr(CLng(lVal) - 5)
                End If

        End Select
    End If
End Sub


Flash ActionScript:

on (release) {
      fscommand("ButtonClick", "cmdBack");
}

on (release) {
      fscommand("ButtonClick", "cmdNext");
}

on (release) {
      fscommand("ButtonClick", "Page3.cmdStop");
}

on (release) {
      fscommand("ButtonClick", "Page3.cmdStop");
}

on (release) {
      fscommand("ButtonClick", "Page4.ShowValue");
}


Regards,


Paul
i think the codes for flash are a little too advanced for me, currently taking computer science 11 in a secondary school. i am still experimenting how to hide the picturebox and put a flash movie in it. the playing of the flash movie has to be simple because i have about 200 pictureboxes(computer ships and player ships). Clicking on the picturebox still doesn't work for me, so i guess the only way is to give every picturebox a specific name.
thundergust,
    Something like this should get you going.

Private Sub ComShip_Click(Index As Integer)
   ComShip(Index).Visible = False
   ShockwaveFlash1.Width = ComShip(Index).Width
   ShockwaveFlash1.Height = ComShip(Index).Height
   ShockwaveFlash1.Top = ComShip(Index).Top
   ShockwaveFlash1.Left = ComShip(Index).Left
   
   'logic here to show flash movie
   
   ComShip(Index).Picture = LoadPicture("C:\boat.bmp")
End Sub

Dang123

ASKER CERTIFIED SOLUTION
Avatar of Dang123
Dang123

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
oh...i just figured it out. i didn't notice the "index" in ComShip(Index). i just keep putting in a integer i created. the flash movie was also a great help. Thanks Dang123!! :)