新建3个对象:command1  image   timer
 command1代码如下(click事件):Timer1.Enabled = True
 timer1代码如下:
Static i, x, y As Integer
  Image1(i).Visible = True
  x = Image1(i).Left + 370 * Rnd
  y = Image1(i).Top - 80 * Rnd
  i = (i + 1) Mod 2
  Image1(i).Visible = False
  Image1(i).Move x, y----------------
以上是关于一个移动图片的程序,只要一点命令按钮,图片就会从一地方移动到另一地方
关于此程序,我还是有些代码不明白,希望大虾们能够解释一下代码的意思。特别是那个static,他和Dim到底有什么区别,为什么我把static改成dim 图片只移动一会儿就不动了。PS:在回答的时候大家能不能把代码复制下来,在代码后面加上'号,这样方便我理解

解决方案 »

  1.   

    有同学问“Static和Dim的区别”,所以写这个帖子来给大家详细的解释一下“Static和Dim的区别”。   
        其实这是一个很基础的问题:
        Static是定义静态变量和数组变量,Dim定义的叫自动变量。
        Static定义的变量,每次引用它时,变量的值会继续保留;而Dim定义的变量,每次引用它时,则会重新赋值。    给大家举个例子,看下面两段代码:    Private Sub Form_Click()
          Dim a As Integer
          a=a+1
        End Sub
        'a的初值默认为0。每次单击窗体控件,a的初值都重新赋值为0,所以无论单击多少次窗体,a始终为1。    Private Sub Form_Click()
          Static a As Integer
          a=a+1
        End Sub
        'a的默认值为0。每次单击窗体控件,a都会保留上一次的值,进行累加,第一次a为1,第二次a为2,第三次a为3,累加下去。    不知大家看后明白了吗?还有一点要说明:Static只能用于过程中
      

  2.   

    Option ExplicitPrivate Sub Command1_Click()
            Timer1.Enabled = True
    End SubPrivate Sub Timer1_Timer()
            Static i, x, y As Integer '设置i,x,y为静态变量,即Timer1运行期间这三个值一直存在
            '设置第i个Image1为可见
            Image1(i).Visible = True
            '以下x,y表示从左下角移动到右上角
            x = Image1(i).Left + 370 * Rnd
            y = Image1(i).Top - 80 * Rnd
            '以下为2张图片交替出现并移动
            i = (i + 1) Mod 2
            Image1(i).Visible = False
            Image1(i).Move x, y
    End Sub
      

  3.   

    这里x,y其实可以不用static来定义,i必须用static来定义i在0,1之间变化,两个image1轮流出现,或者image1(0)出现,或者image1(1)出现
      

  4.   

    static静态变量程序不退出就不会变,一直在内存中
    dim一个过程结束就会退出内存
    有高手了,来学习一下,希望能帮忙解决以下问题
    100分求跨两个access数据库的联合查询