'以下代码自动添加timer和调整form大小,仅供参考
'添加一个模块,写入
'=======================
Option Explicit
Type POINTAPI
X As Long
Y As Long
End Type
Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
'=======================
'以下代码写入form中
'===========================
Option Explicit
Dim Vt, V0, t As Single
Dim CurXY As POINTAPI ' 声明变量
Dim X0, Y0, X1, Y1, MX, MY, N As Single
Dim meclick As Boolean
Private WithEvents Timer1 As Timer
Private WithEvents Timer2 As Timer
Private Sub Form_Load()
Me.BorderStyle = 1
Me.Width = 2000
Me.Height = 2000
Set Timer1 = Controls.Add("vb.timer", "timer1")
Timer1.Interval = 10
Set Timer2 = Controls.Add("vb.timer", "timer2")
Timer2.Enabled = False
Timer2.Interval = 10
End Sub
Sub ks()
V0 = 0
Vt = 0
t = 0
Timer1.Enabled = True
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ks
Timer1.Enabled = False
Timer2.Enabled = True
meclick = True
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
meclick = False
Dim NewForm As Form
Set NewForm = Form1
Form1.Show
End Sub
Private Sub Timer1_Timer()
Dim a As Integer
a = 10
If Me.Top + Me.Height >Screen.Height Then
V0 = Int(Vt * 0.9)
Me.Top = Screen.Height - Me.Height
If Abs(V0) <0.9 Then
Timer1.Enabled = False
End If
t = 0
End If
t = t + 1
Vt = a * t - V0
Me.Top = Me.Top + Vt
If Me.Left <0 Then Me.Left = 0
If Me.Left >Screen.Width - Me.Width Then Me.Left = Screen.Width - Me.Width
End Sub
Private Sub Timer2_Timer()
N = 0.09
X0 = Me.Left + Me.Width / 2
Y0 = Me.Top + Me.Height / 2
If meclick = True Then
GetCursorPos CurXY
X1 = CurXY.X * 15
Y1 = CurXY.Y * 15
End If
MX = (X1 - X0) * N
MY = (Y1 - Y0) * N
If Abs(MX) <5 And Abs(MY) <5 And meclick = False Then
Timer2.Enabled = False
ks
End If
Me.Left = Me.Left + MX
Me.Top = Me.Top + MY
End Sub
首先,在库里有一个小球元件,元件中心就是小球的中心,然后输一下代码;var sw:Number = 550 //Stage Widht,舞台宽,自定
var sh:Number = 400 //Stage Height,舞台高,自定
function creatBall():void{
//创建小球
var ball:Ball = new Ball()
//随机位置
ball.x = Math.random()*sw
ball.y = Math.random()*sh
//随机速度和方向
Math.random()>0.5?ball.speedX = Math.random()*5+1 : ball.speedX = -1 * Math.random()*5+1
Math.random()>0.5?ball.speedY = Math.random()*5+1 : ball.speedY = -1 * Math.random()*5+1
//因为小球的坐标原点是小球的中心,所以用该函数用来调整小球位置,防止移出边界
adjustBall(ball)
//添加小球到显示列表
addChild(ball)
//用ENTER_FRAME侦听器使小球运动
ball.addEventListener(Event.ENTER_FRAME,moveBall)
}
function adjustBall(mc:MovieClip):void{
if(mc.x > sw-mc.width/2){mc.x = sw-mc.width/2}
if(mc.x < mc.width/2){mc.x = mc.width/2}
if(mc.y > sh-mc.height/2){mc.y = sh-mc.height/2}
if(mc.y < mc.height/2){mc.y = mc.height/2}
}
function moveBall(evt:Event):void{
//改变小球的坐标让小球运动
evt.target.x += evt.target.speedX
evt.target.y += evt.target.speedY
//检测小球是否碰到舞台边界
if(evt.target.x >= sw-evt.target.width/2 || evt.target.x <= evt.target.width/2){
evt.target.speedX *= -1
}
if(evt.target.y >= sh-evt.target.height/2 || evt.target.y <= evt.target.height/2){
evt.target.speedY *= -1
}
}
最后,在“满足某个条件下”调用creatBall函数就行了。
总共分两层,三帧。帧频20元件布置:
1、第一层,在第三帧插入帧(不是空白也不是关键帧,是普通帧):小球(自由落体的物体),按钮1(控制自由落体的开始),按钮2(重置自由落体运动),一个输入文本(用来输入自由落体的时间),两个动态文本(一个是现实即时速度,一个用来显示下落的高度);
2、小球的实例名称为"mc",其他的不用命名,但是要设置一下变量,设置输入文本变量为t,其他两个动态文本分别为v、h
3、第二层,分别插入三个空白关键帧,用来编写代码
代码部分:
1、第二层第一帧:
i=0
t=0
t=Number(t)
v=Number(0)
h=Number(0)
mc._y=48
g=9.8
stop()
2、第二层第二帧:
i = Number(i)+0.1
if (Number(i)<Number(t)+0.1) {
mc._y = 48+0.5*g*i*i
h = 0.5*g*i*i
v = g*i
}
3、第二层第三帧:
gotoAndPlay(2)
按钮1:
on(release){gotoAndPlay(2)}
按钮2:
on (release) {
gotoAndPlay(1)
}
好了,一个完整的自由落体运动就完成了,用输入时间t控制自由落体的长久。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)