文章搜索:
打开支付宝首页搜索“510617664”,即可领红包
  首页--> 计算机--> FLASH教程
 
Flash特效制作常用的源代码大放送
http://www.xxqqss.com 学习轻松网 点击量:3184
 

代码:

以下是引用片段:

for(variin_root){

if(_root[i].onEnterFrame!=null){//如果这个Object实现了onEnterFrame接口的话

_root[i].oldFunc=_root[i].onEnterFrame;//首先保存原来的onEnterFrame的句柄

_root[i].onEnterFrame=function(){//然后开始替换了~~加上一层壳~~

trace(this+":onEnterFrameCalled.");

this.oldFunc();//我们用保留的句柄调用原来的函数

trace(this+":onEnterFrameReturned.");

}

}

}

如果要取消这些附加的操作:

代码:

以下是引用片段:

for(variin_root){

if(_root[i].oldFunc!=null){//如果发现改过得痕迹

_root[i].onEnterFrame=_root[i].oldFunc;

delete(oldFunc);

}

}

呵呵这些操作的关键在于 Flash里面的引用机制:

所有函数名都是引用,而函数本身是浮在数据的海洋里面的。如果没有任何变量引用他,他就会被回收。如果有,

他就不会被回收。所以有着样一个有趣的事情:delete函数不会删掉任何东西,除了要求删掉的那个名字:(和java

机制相似,而和C不同)

以下是引用片段:

a=function(){trace("Functionacalled");}

b=a;

delete(a);//除了a这个名字被删掉以外,没有任何事情发生

b();

函数通过this得到其调用者的实例。

MovieClipPlus.as

定义了一些简单的MC操作

//画点:由于Flash没有画点,那我们就画短线

以下是引用片段:

MovieClip.prototype.point=OxMovieClipPoint;

functionOxMovieClipPoint(x,y){

this.moveTo(x,y);

this.lineTo(x+1,y);

}

//画矩形,左上角x1,y1 右下角x2,y2, 颜色rgb, 不透明度alpha

以下是引用片段:

MovieClip.prototype.rect=OxMovieClipRect;

functionOxMovieClipRect(x1,y1,x2,y2,rgb,alpha){

this.beginFill(rgb,alpha);

this.moveTo(x1,y1);

this.lineTo(x1,y2);

this.lineTo(x2,y2);

this.lineTo(x2,y1);

this.lineTo(x1,y1);

this.endFill();

}

//画圆:这么bt的冬冬当然不是我写的,作者素JodyKeating

//圆心x,y,半径r

MovieClip.prototype.circle=OxMovieClipCircle;

functionOxMovieClipCircle(x,y,r){

vara=r*0.414213562;

varb=r*0.707106781;

this.moveTo(x+r,y);

this.curveTo(x+r,y-a,x+b,y-b);

this.curveTo(x+a,y-r,x,y-r);

this.curveTo(x-a,y-r,x-b,y-b);

this.curveTo(x-r,y-a,x-r,y);

this.curveTo(x-r,y+a,x-b,y+b);

this.curveTo(x-a,y+r,x,y+r);

this.curveTo(x+a,y+r,x+b,y+b);

this.curveTo(x+r,y+a,x+r,y);

}

两点间的直线移动

以下是引用片段:

vars=15;

_root.onMouseDown=function(){

varoldM_x=_root._xmouse;

varoldM_y=_root._ymouse;

ax=aa._x;

ay=aa._y;

dis=Math.sqrt((oldM_x-ax)*(oldM_x-ax)+(oldM_y-ay)*(oldM_y-ay));

xa=(oldM_x-ax)/dis;

ya=(oldM_y-ay)/dis;

amove();

};

functionamove(){

onEnterFrame=function(){

aa._x+=s*xa;

aa._y+=s*ya;

if(Math.sqrt((aa._x-ax)*(aa._x-ax)+(aa._y-ay)*(aa._y-ay))>dis){

deleteonEnterFrame;

}

};

}

计算两个对象之间/两点之间的距离(注册点)


打印】 【关闭
免责声明 :本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请发送fiyeadwyv@163.com
最热门点击排行
 
版权所有 2006-2021:学习轻松网 Copyright http://www.xxqqss.com All rights reserved 浙ICP备14013707号-1
广告联系电话: 13958357030 联系QQ:9792414 工具条下载