发现Flash的mouse对象也可以添加事件,便用这些事件写了这个好玩且实用的程序实例。
运用这个实例的思路,我们可以轻易的实现剪辑的缩放和移动,而且不用改变剪辑的注册点。
在做缩放的时候,有一个问题,就是缩放的中心为剪辑的注册点,这使得我们本来是想放大或缩小我们的鼠标的位置,而最后得到的确实注册点放大或缩小后的位置。这个问题也难不倒我们。
在纸上糊乱画了一下,发现一个图形要想以某一点(a,b)为中心放大或缩小,就只需先将图片以(0,0)点缩放,然后再将图片向x轴方向移动-a*sc,向y轴方向移动-b*sc(其中sc缩放比列的增量)。
至于移动的话,就自己看看代码哦!将鼠标按下并移动,或者滚动滚轮试试看。^_^
程序代码:
//剪辑名称为Movie_Clip
stop();
fscommand("allowscale",false);
var mc_menu:ContextMenu=new ContextMenu();
mc_menu.customItems.push(new ContextMenuItem("蓝光_BlueShine",GotoBlueShine));
this.menu=mc_menu;
function GotoBlueShine()
{
getURL("http://www.blue-sun.cn","_blank");
};
var MouseListener:Object=new Object();
//缩放剪辑的代码
MouseListener.onMouseWheel=function(delta)
{
with(Movie_Clip)
{
var omx=_xmouse,omy=_ymouse;
_xscale+=delta;
_yscale+=delta;
_x-=omx*delta/100;
_y-=omy*delta/100;
}
};
//移动剪辑的代码
//这里要注册两个变量,用以存储鼠标的初始位置
var originMusX:Number ,OriginMusY:Number ;
//还定义一个判断鼠标是否按下的boolean变量
var MousePress:Boolean;
MouseListener.onMouseDown = function()
{
MousePress=true;
originMusX=_xmouse;
originMusY=_ymouse;
}
MouseListener.onMouseUp = function()
{
MousePress=false;
}
MouseListener.onMouseMove = function()
{
trace(_xmouse);
if(MousePress)
{
Movie_Clip._x+=_xmouse-OriginMusX;
Movie_Clip._y+=_ymouse-OriginMusY;
originMusX=_xmouse;
originMusY=_ymouse;
}
}
Mouse.addListener(MouseListener);