用VB设计一个动画,小球的d跳运动,小球的滚动

用VB设计一个动画,小球的d跳运动,小球的滚动,第1张

我有窗口的d跳完整代码,可自行根据需要修改,有用请采纳,谢谢

'以下代码自动添加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控制自由落体的长久。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11867566.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存