仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3957|回复: 9
打印 上一主题 下一主题

[学习教程] 来一发Flash as进门(11):拖动与碰撞检测-Flash actionscript

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-15 20:52:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Flash动画制作软件的界面没有太大的改变,只是在以前的属性面板右侧增加了两个新的选项“参数”和“滤镜”。
本例持续解说AS的基本常识,明天我们来进修FlashAS进门系列教程第七课:影片剪辑第五节拖动与碰撞检测,对Flash的AS编程有乐趣的伴侣能够到论坛与作者交换。
上一篇文章:Flashas进门(10):影片剪辑的深度
第五节拖动与碰撞检测
AS的一个主要上风就是能够完成交互动画,一些殊效不必AS也是能够做出来的,但交互的动画不必AS则是没法完成的。拖动MC则是交互动画的一个例子。
startDrag()函数或MovieClip.startDrag()办法:
利用startDrag()能够完成拖动效果。格局:
MC.startDrag(一个布尔值,右边,上边,右侧,下边);
这个办法中的一切参数都是可选的,便可要可不要。上面先容一下这些参数:
一个布尔值:true或false。当设定为true时鼠标地位将锁定在要拖动的MC的注册点上。想想我们要自界说鼠标指针,这个参数是否是很有效呢?
前面的4个边,断定了MC能够被拖动的局限。想想我们要做一个把持滑条这几个参数是否是很有效呢?
上面实习一下:

自界说鼠标指针:
新建一个MC,画一个或找一个你喜好的鼠标图形,图形应当有一个较尖的部位作为针尖吧?将这个针尖与窗口中的十字对齐。回到主场景,将这个MC拖到舞台上,翻开属性面板,实例称号为:mouse_mc;翻开帧举措面板输出:
Mouse.hide();
mouse_mc.startDrag(true);
测试影片,你会发明你的鼠标已酿成你喜好的图形了。
代码中第一句将体系鼠标埋没起来,第二句使你的图形能够拖动了,而且鼠标指针被定位在针尖处。利用自界说鼠标要注重的是,你不克不及再拖动第二个MC,由于一次只能拖动一个MC,当你拖动第二个MC时,你的鼠标图形将不会再被拖动了。


stopDrag()办法:
下面先容了入手下手拖动MC的办法,入手下手拖动总得有中断拖的时分啊,这个办法就是中断拖动。我们回忆一下拖动一个MC的历程,一样平常来讲,都是点下鼠标左键不放,就能够拖动了,摊开鼠标后就中断拖动,是如许的吧?以是一样平常将startDrag()放到MC的onPress事务(点下鼠标时)中,而将stopDrag()放到onRelease事务(摊开鼠标时)中。
滑动把持条:
偶然我们会用到滑动把持条,好比把持音量巨细,播放进度等。那末滑块就必要用到拖动的办法。
用矩形工具画一个修长的矩形,笔触添补公随你喜好,要不要都行,最少要一个吧?将它转换为MC,双击它进进编纂形态,翻开对齐面板选择相对舞台,左对齐,回到主场景,翻开属性面板,实例称号为blt_mc。然后再画一个很短的矩形,做滑块,也转换为MC,也同修长的矩形一样的做法,只是居中对齐,最初的实例名为hk_mc。
blt_mc移到你想它所处的地位,将hk_mc移到blt_mc上。
在帧举措面板中输出:
l=blt_mc._x;
r=l+blt_mc._width;
h=blt_mc._y;
hk_mc.onPress=function(){
this.startDrag("true",l,h,r,h);
}
hk_mc.onRelease=function(){
stopDrag();
num=(hk_mc._x-blt_mc._x)/blt_mc._width;
}
测试影片,拖动滑块会发明滑块只能在进度条的局限内拖动了。这是由于我们对startDrag()因为办法使用了4个参数:l,r,h.它们分离是进度条的摆布边的x地位及y轴的地位。滑块的挪动局限被限制在这个局限内。
从下面的代码中能够看出,当鼠标摊开时会发生一个num变量,这个变量是用滑块的x坐标减往进度条的x坐标除以进度条的长度,如许就能够失掉一个0~1的数字。有了这个数字,我们就能够用于任何必要用数字把持的工具了。


_droptarget属性:
大概会有这类情形,我们拖动一个工具,想晓得它是不是被拖到了另外一个工具之上,好比我们拖动苹果到盘子中,我们大概想晓得苹果是不是被拖到了盘子之上,假如是苹果则定位到盘子上,假如不是苹果就失落到深渊中。MC的_droptarget属性将前往被自已堆叠鄙人面的MC的称号。好比将苹果拖到盘子上时,苹果将盘子压鄙人面,苹果的_droptarget属性将前往盘子的称号。但它前往的称号是带反斜杠的格局的,因而必要用eval()将其转换为尺度格局,如:eval(苹果._droptarget)这一句了局是:盘子。
做个实习熟习一下:
在舞台上画两个园,分歧的色彩,均转换为MC,实例称号分离为:mc1_mc,mc2_mc.右击mc1_mc>分列>移至顶层;翻开举措面板,输出:
mcx=mc1_mc._x;
mcy=mc1_mc._y;
mc1_mc.onPress=function(){
this.startDrag(true);
}
mc1_mc.onRelease=function(){
stopDrag();
if(eval(mc1_mc._droptarget)==mc2_mc){
this._x=mc2_mc._x;
this._y=mc2_mc._y;
}else{
this._x=mcx;
this._y=mcy;
}
}
测试影片,在mc1_mc上点击时能够拖动,将它拖到mc2_mc上摊开鼠标,则与mc2_mc堆叠,假如不在mc2_mc上摊开鼠标,则回到原位。
这类反省一个MC是不是被拖到另外一个MC之上另有另外一种办法,那就是碰撞检测。


hitTest()办法:
该办法将检测MC是不是与某点或与另外一MC产生订交(碰撞)。假如产生订交则前往true,不然前往false.
用法:1.与某点订交:MC.hitTest(x,y,true或false);
这将检测MC是不是与括号中的x,y所断定的点(x,y)订交。前面的布尔值假如为ture,那末将检测MC的实践图形局限,假如为false则检测MC的外框是不是与(x,y)订交。
2.MC与MC订交:MC.hitTest(另外一MC).
把下面的的实习改成上面的代码,可失掉不异的了局:
mcx=mc1_mc._x;
mcy=mc1_mc._y;
mc1_mc.onPress=function(){
this.startDrag(true);
}
mc1_mc.onRelease=function(){
stopDrag();
if(this.hitTest(mc2_mc)){
this._x=mc2_mc._x;
this._y=mc2_mc._y;
}else{
this._x=mcx;
this._y=mcy;
}

}

ActionScript是一种程序语言的简单文本文件.FLA档案能够直接包含ActionScript。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-17 14:54:15 | 只看该作者
它包含了下列常见的形式之一或者几种的组合:流媒体、声音、Flash、以及Java、Javascript、DHTML等程序设计语言。 
若相依 该用户已被删除
板凳
发表于 2015-1-21 09:43:34 | 只看该作者
关于位图和矢量图形的区别,可参看Flash教程。
admin 该用户已被删除
地板
发表于 2015-1-30 14:06:10 | 只看该作者
FLASH的优点~你用眼睛所看到的东西~都能用它来实现~一点不夸张~高楼大厦-花草树木-高山流水-天空白云-阿猫阿狗-一切活的东西都可以容入到FLASH里面
分手快乐 该用户已被删除
5#
发表于 2015-2-6 13:25:37 | 只看该作者
在与制作传统动画相比较的同时,flash具有便捷、节省人力财力,节约时间、推广方便的许多优势。但与此同时它也具有一点的缺点。
山那边是海 该用户已被删除
6#
发表于 2015-2-16 08:46:24 | 只看该作者
关于位图和矢量图形的区别,可参看Flash教程。
因胸联盟 该用户已被删除
7#
发表于 2015-3-5 03:40:30 | 只看该作者
Flash流行的主要原因是它使用了矢量图形(与位图相反)。因为这种图形格式比位图小得多,而且在缩放时对图形质量影响不大,所以很适合对带宽要求很高的Web。
8#
发表于 2015-3-11 23:34:48 | 只看该作者
FLASH广告的问题主要表现在:
不帅 该用户已被删除
9#
发表于 2015-3-19 16:53:15 | 只看该作者
FLASH在网站建设中广泛的应用,但是FLASH也有自身的缺陷,尤其考虑到网络营销的综合效果时,FLASH 格式的广告并非最好的选择,有时甚至会降低广告效果。
乐观 该用户已被删除
10#
发表于 2015-3-29 17:41:16 | 只看该作者
Flash动画制作,是指利用Flash软件对动画进行设计,以产生千变万化的效果。随着互联网的兴起。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 20:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表