Project1.zip
Hello Jabaco community,
Edit: This post is obsolete (because the problem was in Line() and not with the timers because I didn't install the latest framework version and using the Key_Down and Up with a variable I got the same effect as with AsyncKeyState)
, except the question whether WinAPI calls are possible on a web applet with IE and Firefox.
When I saw this Jabaco application I was very glad because-of the option to export VB programming to JAVA! I am really impressed, after playing around with Jabaco.
But as soon as I've begun programming a clone of a very old and simple game called Achtung die curve, I encountered some problems. I am using the newest 1.4.2 Version. Maybe Jabaco just works differently and I am the one not being compatible.
1. Timers seem to stop functioning after a short while. However from my short experience I can tell that the lower the interval the less time the timer will work.
2. Is calling WinAPI calls possible from within an embedded object in a web page? Both Firefox as well as IE do not allow doing so. In this case I didn't want the OS to delay further input after the first press of a button, while still being pressed (ie: a long press produces: 1|LONG DELAY|1|SHORT DELAY|1|..|1|..|1|..|1|..|1). I have tried implementing the KeyListener events but got the same, well, Normal effect of typing, which delays all characters after the first one according to the default OS setting.
BTW: The timer problem persisted, even when I did not use a Timer (Timer2) for input, but the Form_KeyDown instead. I assumed the problem might had arose because of the two timers' conjunction. Well, to draw, at least a single timer is required (I do not wish to make a loop with DoEvents and Sleep).
I have placed two timers on a black form (applet) -- the first one set to interval=12 and the other=13. Herewith the simple code (which I've also attached):
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
Option Explicit
Private Winapi Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Type Acht 'Snake_type
X As Single
Y As Single
ANG As Integer 'Angle
End Type
Dim Achts() As Acht
'ARRAY AND SETUP - NOT IMPORTANT
Public Sub Applet_Initialize()
Redim Achts(1 To 1)
Achts(1).ANG=0
Achts(1).X=Me.Width/2
Achts(1).Y=Me.Height/2
End Sub
'This timer draws the snakes
Public Sub Timer1_Timer()
Dim i As Integer
For i=1 To Ubound(achts)
Me.Line achts(i).X,achts(i).Y,achts(i).X + 2*cos(achts(i).ANG/180*3.1415),achts(i).Y + 2*sin(achts(i).ANG/180*3.1415),False,rgb(255,255,255)
achts(i).X=round(achts(i).X + 2*cos(achts(i).ANG/180*3.1415),1)
achts(i).Y=round(achts(i).Y + 2*sin(achts(i).ANG/180*3.1415),1)
Next
End Sub
'This timer handles the controls
Public Sub Timer2_Timer()
If GetAsyncKeyState(49) Then
achts(1).ANG=achts(1).ANG-2
achts(1).ANG = achts(1).ANG Mod 360
Elseif GetAsyncKeyState(81) Then
achts(1).ANG=achts(1).ANG+2
achts(1).ANG = achts(1).ANG Mod 360
End If
End Sub
|
Thanks!
Amit Markel