当前位置:软件学习 > Flash >>

用滑块控制文字移动

建议先把原文件下载下来,打开以便对照下面的讲解
  1.我们要用一个按纽来拖动文字,那么就要有一个放文字的mc(mc是指影片剪辑),在场景中写一段文字,选种文字,按F8把他转变成mc,mc的名称为:宣传口号,同时把他的实例名称设为:wby。
  2.新建一个mc,取名为:主场景的mc,其实例名称设为:any。那么我们在这个mc里主要放些什么呢???
  别急,我们来放一个空的mc和一个按纽,(空的mc???没听说过吧??呵呵,等一下你就知道他的作用了。)按Ctrl+F8键,新建一个mc,取名为:空的mc,不用为它取实例名称。
  既然是空的mc,那么它是没有任何图形和文字的,但是注意它还是有内容的,不然我们要它干吗??它的内容就是——————代码,别怕,我一定会给你讲清楚的,但是我们还是先讲怎么做,好吗??
  在这个空的mc里面,我们共放两个空白关键桢(即它的第一第二桢都是空白关键桢),在第一桢上我们加入下列代码:

tellTarget(_root.any){
setProperty(wbh, _y, wbyy - (_y - ans) / anh * (getProperty(wbh, _height) / 1.300000));
}

  我翻译一下:告诉在场景中的“主场景的mc”(实例名称设为:any的那个)设置一个叫做wbh的对象的纵坐标的属性,后面wbyy - (_y - ans) / anh * (getProperty(wbh, _height) / 1.300000)是这个叫做wbh的对象的纵坐标的值。(参见金闪客论坛http://goldflash.lpscn.com的见首页 >> >> 网页技术区 >> 技术交流区 [求助]代码不懂)

  我们在第二桢上我们加入下列代码:

gotoAndPlay(1);

  好了这个空的mc搞定了。

  回到影片剪辑——主场景的mc中来,(注意不是回到主场景)
这个空的mc我们不管它,下面做一个按纽取名为:按纽,不用为它设置实例名称。在按纽上加入以下代码:

on (press)
{
startDrag("", false, _x, ans, _x, anw);
}

on (release, releaseOutside)
{
stopDrag();
}

  拖动命令的格式可以写成
startDrag(target,[lock ,left , top , right, bottom])
或target.startDrag([lock ,left , top , right, bottom])
其中参数
target 是指拖动的影片剪辑的目标路径。
lock 是一个逻辑值,指定可拖动影片剪辑是锁定到鼠标位置中央 (true),还是锁定到用户首次单击该影片剪辑的位置上 (false)。此参数是可选的。
left、top、right、bottom 相对于影片剪辑父级坐标的值,这些值指定该影片剪辑的约束矩形。这些参数也是可选的。

  我翻译一下:当鼠标按下时,开始拖动这个(""是指这个东东,既按纽)false表示可拖动影片剪辑锁定到用户首次单击该影片剪辑的位置上。呵呵,有点不好懂是吧??我是这样理解的:就是每次打开这个文件该按纽的位置是都是一样的,不会因为你这次拖动了它,下次打开这个文件就跑到拖动后的位置去了。
  拖动按纽是有一个范围限制的,看看有两个 _x,表明它的横坐标已经限死,只能是按纽的当前横坐标,也就是说,这个按纽只能上下移动了。
  当鼠标放下,停止拖动。

  下面我们发现有一些怪怪的值,比如 ans, anw,wbh, wbyy 等,好象我们还没有给他们定义,是吧?
  
  接着我们来定义这些值,是在什么地方定义这些值呢,在影片剪辑——主场景的mc中我们新建一层,在这一层的空白关键桢上放代码来定义这些值,代码如下:

anh = 313;//用来规定鼠标上下拖动按纽的长度(长度值自己定)
ans = _y;//将此时的鼠标所在位置的纵坐标付值给变量ans,即按纽拖动前的纵坐标
anw = Number(ans) + Number(anh);//仔细想想,一定不难猜到这是鼠标可以拖动的底限
wbh = _root.wby;
wbyy = getProperty(wbh, _y);

  这最后两句
  wbh = _root.wby;是将主场景中的wby,也就是文字mc定义给变量wbh
  因为我们的文字是可以动的,你可以将它理解为把场景中的文字mc,那个不会动的文字mc放到影片剪辑——主场景的mc中来,并且顺便给了它个变量名:wbh
  呵呵,现在你知道

setProperty(wbh, _y, wbyy - (_y - ans) / anh * (getProperty(wbh, _height) / 1.300000));

  中的wbh是谁了吧??

  那么wbyy = getProperty(wbh, _y);意思就是将随时获取到的wbh的纵坐标的值付值给变量wbyy;
  现在你知道为什么文字会动了吧??
   
  最后把这个影片剪辑——主场景的mc拖到场景中就ok了! 

补充:flash教程,As3.0
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,