|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Flash可以包含简单的动画、视频内容、复杂演示文稿和应用程序以及介于它们之间的任何内容。
<divclass="start"><P> 用FlashMX制造交互式的课件时,良多场所都必要用到拖动。在FlashMX中次要的拖动体例有以下三种:无任何束缚的拖动、限定在某一矩形局限内的拖动、限定在某一起径上的拖动。上面经由过程实例加以申明。
1.无任何束缚的拖动
(1)翻开“拔出”菜单的“新建元件”命令,在“创立新元件”对话框中,“称号”框内输出“球”,“举动”选择“影片剪接”。
(2)画一个圆,最好是让圆心和影片剪接的中央对齐。
(3)选择主场景,按F11翻开“库”面板,将刚制造好的球拖动至主场景中。
(4)选择主场景中的球,翻开窗口下方的“属性”面板,在称号框内输出称号ball。
(5)右击ball,选择“举措”命令,在代码编纂框内输出:
on(press)
{
startDrag("",true);//同意拖动ball
}
on(release,releaseOutside)
{
stopDrag();//开释鼠标时,中断拖动ball
}
(6)拖动ball,我们将看到ball能够拖动加入景中的恣意地位,开释鼠标时,ball将中断拖动。
2.束缚某一矩形局限内的拖动
将以上代码改成:
on(press)
{
//限定拖动局限为(0,0)到(100,100)之间,注重坐标原点位于场景中的左上角。
startDrag("",true,0,0,100,100);}
on(release,releaseOutside)
{
stopDrag();
}
再拖动ball,将看到ball被限定在某一地区内拖动。
3.沿某一起径的拖动
在某些场所,如经由过程拖动静态天生数学函数图象时,由于函数图象都有一个函数式束缚,决意了以上两种办法都不成行。这类拖动的关头在于要依据束缚前提来决意被拖动工具的地位。上面以静态天生圆来讲明此类拖动成绩的办理办法。
(1)经由过程“拔出”菜单制造一个名为“点”的影戏剪接,画一个小点暗示该影戏剪接,注重点的中央和影戏剪接的中央点重合。
(2)转到主场景,新增一图层,将两图层分离定名为“剧本”和“工具”。
(3)选择“工具”工夫轴,在场景中到场两个“点”的实例,在它们的属性面板平分别定名为“yuanxi”(暗示圆心)和“dian”(暗示圆周上的点),让它们得当坚持必定的间隔,而且让“yuanxi”位于场景的中心。
(4)右击“剧本”层第一帧,选择“举措”,在代码编纂窗口内输出以下剧本:
drag_flag=false;//拖动标记
x0=yuanxin._x;
y0=yuanxin._y;
dian_x=dian._x;
dian_y=dian._y;
//盘算圆的半径,这就是拖动圆周的点的束缚前提,被拖动的点到圆心的间隔即是半径。
r=Math.sqrt((x0-dian_x)*(x0-dian_x)+(y0-dian_y)*(y0-dian_y));
_root.onEnterFrame=function()
{
if(drag_flag)
{
x=_xmouse;
y=_ymouse;
angle=Math.atan(Math.abs(y0-y)/Math.abs(x-x0));
dian_x=x0+r*Math.cos(angle);
dian_y=y0-r*Math.sin(angle);
//第一象限
if((x>=x0)&&&&(y<=y0))
{
dian_x=x0+r*Math.cos(angle);
dian_y=y0-r*Math.sin(angle);
depth=angle*180/3.14159;
}
//第二象限
if((x<=x0)&&&&(y<=y0))
{
dian_x=x0-r*Math.cos(angle);
dian_y=y0-r*Math.sin(angle);
depth=angle*180/3.14159+90;
}
//第三象限
if((x<=x0)&&&&(y>=y0))
{
dian_x=x0-r*Math.cos(angle);
dian_y=y0+r*Math.sin(angle);
depth=angle*180/3.14159+180;
}
//第四象限
if((x>=x0)&&&&(y>=y0))
{
dian_x=x0+r*Math.cos(angle);
dian_y=y0+r*Math.sin(angle);
depth=angle*180/3.14159+270;
}
duplicateMovieClip("dian","dian"adddepth,depth);
_root["dian"adddepth]._x=dian_x;
_root["dian"adddepth]._y=dian_y;
_root.clear();
_root.moveTo(x0,y0);
_root.lineStyle(1,0xff0000,100);
_root.lineTo(dian_x,dian_y);
}
} |
|