动画教程之Flash AS3教程:Dot类-Flash actionscript
Flash也支持高品质的mp3音频流、文字输入字段、交互式接口等等很多工具。这个最新版本可以观看所有的flash格式。后面先容了FlashAS3教程:类的分包处置,接着先容index.base.geom.Dot类解说。
flash效果:
http://www.webjx.com/files/media/dot.swf
拖拽物体1和物体2,就能够看到效果了
index.base.geom.Dot类解说
基础功效:纪录xy两点
机关函数
publicfunctionDot(x_:Number=0,y_:Number=0,_isListen:Boolean=false)
前两个参数暗示Dot的初始地位,第三个参数暗示是不是是一个功效性强的点
假如为false,当xy产生改动的时分,就不会公布事务,为true则会公布事务
bind绑定显现工具办法
publicfunctionbind(_dis:DisplayObject,isInTime:Boolean=false):void
当Dot绑定到DisplayObject上以后,Dot的xy属性会跟着_dis改动而改动
第一个参数为绑定的工具,第二个参数暗示是不是立即绑定
假如为false,Dot的xy属性不会跟着_dis的改动而立即改动,但在猎取Dot的xy属性,大概挪用Dot的办法时,将会当即改动而且以_dis的xy属性为基准
假如为true,Dot的xy属性会跟着_dis的改动而当即改动,假如isListen为true,还会立即公布xy改动的事务,那末即是能够侦听显现工具的xy属性,而且在改动后做出立即的反响
updata革新办法
publicfunctionupdata():void
更新显现工具与Dot的xy属性
from前往两点之间间隔
publicfunctionfrom(_dot:Dot,isQuadrant:Boolean=false):Number
第一个参数暗示,停止点,第二个参数暗示,是不是为实在间隔
假如为false,前往的两点间隔相对是负数,指的是两点之间的相对间隔
假如为true,则前往绝对坐标,那末是有大概的为负的!
angle前往两点所构成的夹角
publicfunctionangle(_dot:Dot,isRadian:Boolean=false):Number
第一个参数暗示,别的一个点,第二个参数暗示,是不是为弧度值
前往的角度是绝对顺工夫的实在角度值,详细的数值变更能够从下面的例子看出
quadrant前往绝对点地点的象限
publicfunctionquadrant(_dot:Dot,isMaster:Boolean=true):int
第一个参数暗示别的一个点,第二个参数暗示是不是以该点为尺度,详细请看示例
前往0,暗示两点在统一条横着大概竖着的直线上
前往1,暗示在第一象限,前往2暗示第二象限…………最高是第四象限。。
不晓得象限是甚么意义的,请看这点击跳转"象限"的百度百科页面
clear办法
publicfunctionclear():void
清空显现工具
length属性(只读)
publicfunctiongetlength():Number
猎取该点距0,0点的间隔
x属性
publicfunctionsetx(num:Number):void
publicfunctiongetx():Number
设置x属性,假如isListen为true,则会公布x改动的事务
y属性
publicfunctionsety(num:Number):void
publicfunctiongety():Number
设置y属性,假如isListen为true,则会公布y改动的事务
isListener属性
publicvarisListen:Boolean
指定设置isListen的值,是不是为可侦听xy
举例:
下面的flash展现源代码
CODE:
importindex.base.geom.Dot;
importindex.base.events.DotEvent;
varpo1ot=newDot(0,0,true);
varpo2ot=newDot(0,0,true);
po1.bind(p1,true);
po2.bind(p2,true);
po1.addEventListener(DotEvent.DOT_CHANGE,dotChangeFun);
po2.addEventListener(DotEvent.DOT_CHANGE,dotChangeFun);
functiondotChangeFun(eotEvent):void{
te.text="物体1坐标:"+po1.x+","+po1.y;
te.appendText("
物体2坐标:"+po2.x+","+po2.y);
te.appendText("
两点之间间隔:"+po1.from(po2));
te.appendText("
所构成的角度:"+po1.angle(po2));
te.appendText("
物体1地点象限:"+po1.quadrant(newDot,false));
te.appendText("
物体2地点象限:"+po2.quadrant(newDot,false));
te.appendText("
物体1关于物体2在象限:"+po2.quadrant(po1));
}
p1.addEventListener(MouseEvent.MOUSE_DOWN,p1MouseDownFun);
p2.addEventListener(MouseEvent.MOUSE_DOWN,p2MouseDownFun);
functionp1MouseDownFun(e:MouseEvent):void{
p1.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP,p1MouseUpFun);
}
functionp1MouseUpFun(e:MouseEvent):void{
p1.stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_UP,p1MouseUpFun);
}
functionp2MouseDownFun(e:MouseEvent):void{
p2.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP,p2MouseUpFun);
}
functionp2MouseUpFun(e:MouseEvent):void{
p2.stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_UP,p2MouseUpFun);
}上面是类的源代码
CODE:
packageindex.base.geom{
importflash.events.EventDispatcher;
importflash.display.DisplayObject;
importindex.base.events.DotEvent;
publicclassDotextendsEventDispatcher{
privatevar_x:Number;
privatevar_y:Number;
privatevardisisplayObject;
publicvarisListen:Boolean;
publicfunctionDot(x_:Number=0,y_:Number=0,_isListen:Boolean=false){
_x=x_;
_y=y_;
isListen=_isListen;
}
//绑定DisplayObject
publicfunctionbind(_disisplayObject,isInTime:Boolean=false):void{
dis=_dis;
updata();
if(isInTime)dis.addEventListener("enterFrame",enterFrameFun);
}
//帧频仍事务
privatefunctionenterFrameFun(e:Object):void{
if(_x!=dis.x)x=dis.x;
if(_y!=dis.y)y=dis.y;
}
//更新xy数据
publicfunctionupdata():void{
if(dis!=null){
_x=dis.x;
_y=dis.y;
}
}
//盘算该点与别的一点的间隔
publicfunctionfrom(_dotot,isQuadrant:Boolean=false):Number{
updata();
varnum:Number=Math.sqrt(Math.pow(_dot.x-_x,2)+Math.pow(_dot.y-_y,2));
if(!isQuadrant)num=Math.abs(num);
returnnum;
}
//盘算该点与别的一点所构成的线段与程度线的夹角,按顺工夫盘算
publicfunctionangle(_dotot,isRadian:Boolean=false):Number{
updata();
varnumx:Number=_dot.x-_x;
varnumy:Number=_dot.y-_y;
varnum:Number=Math.atan(numy/numx);
if(!isRadian)num=num*180/Math.PI;
returnnum;
}
//前往以后点处在别的一点的哪一个象限中或前往别的一点处在以后点的哪一个象限中
publicfunctionquadrant(_dotot,isMaster:Boolean=true):int{
updata();
if(_x==_dot.x||_y==_dot.y){
return0;
}
varnum:int;
varp1:Boolean=(_x-_dot.x)>0;
varp2:Boolean=(_y-_dot.y)>0;
num=isMaster?(p1?(p2?2:3):(p2?1:4)):(p1?(p2?4:1):(p2?3:2));
returnnum;
}
//前往该点距0点的间隔
publicfunctiongetlength():Number{
updata();
varnum:Number=Math.sqrt(Math.pow(_x,2)+Math.pow(_y,2));
returnnum;
}
//扫除显现工具
publicfunctionclear():void{
dis=null;
}
//改动X坐标
publicfunctionsetx(num:Number):void{
_x=num;
if(dis!=null)dis.x=num;
if(isListen)dispatchEvent(newDotEvent(DotEvent.DOT_CHANGE,true));
}
//设置X坐标
publicfunctiongetx():Number{
updata();
return_x;
}
//改动Y坐标
publicfunctionsety(num:Number):void{
_y=num;
if(dis!=null)dis.y=num;
if(isListen)dispatchEvent(newDotEvent(DotEvent.DOT_CHANGE,true));
}
//设置Y坐标
publicfunctiongety():Number{
updata();
return_y;
}
}
}
事务类的代码:CODE:
packageindex.base.events{
importflash.events.Event;
publicclassDotEventextendsEvent{
publicstaticconstDOT_CHANGE:String="dotChange";
publicfunctionDotEvent(type:String,bubbles:Boolean=false,cancelable:Boolean=false){
super(type,bubbles,cancelable);
}
}
}
Flash动画说到底就是“遮罩+补间动画+逐帧动画”与元件(主要是影片剪辑)的混合物,通过这些元素的不同组合,从而可以创建千变万化的效果。
动画教程之Flash AS3教程:Dot类-Flash actionscript
Flash流行的主要原因是它使用了矢量图形(与位图相反)。因为这种图形格式比位图小得多,而且在缩放时对图形质量影响不大,所以很适合对带宽要求很高的Web。 逐渐改变了我们生活及生活习惯的一些东西,而正是互联网的大势兴起,Flash动画越来越受到宠爱,现在,Flash动画已成为网络广告的中坚力量。 随着动漫发展趋势,我国也越来越重视动漫产业的发展,各种制作动画软件应运而生,其中flash比较突出。 FLASH广告的问题主要表现在: 都着重在优点方面,请尽量答的详细、深入一些,谢谢!拿了我全部的爱问分了已经 矢量图形相对于位图的另一个优势是可以随意缩放的能力。这是对动画进程的奖赏,对用户来说也是一个很酷的特征。在Flash之前,Web上没有这种功能。 祯率越高,动画中可包容的信息越多,动画看起来越光滑和流畅。当然,当祯率增加时,计算机的CPU的重绘工作越多,运行得就越慢。 没有安装FLASH插件的前提下,无法正常显示广告效果。根据调查显示,有3%的互联网用户没有安装shockwave Flash。虽然比例不大,但不能因为这样一个简单的原因而拒绝这些用户。 流技术让用户在下载的同时看到动画(与全部下载后再观看相反)。但是这也不是什么新技术 - Web一出现就有这种技术了。
页:
[1]