flash学习笔记(八)--动态创建图形和动画效果
第三篇 动态创建图形和动画效果
第十八章 使用过度效果相关类动态创建动画效果
- 创建过渡效果动画:
类fl.transitions/fl.transitions.easing
Lris:动态缩放的方形或圆形动画遮罩来显示影片剪辑对象
Tween:动态创建补间动画
transitionManager/transition:创建过渡效果
- 使用TransitionManager类:
1>第一种方法:start
import fl.transitions.*;
import fl.transitions.easing.*;
import flash.display.MovieClip;
//var myMovieClip_mc:MovieClip = new MovieClip();
TransitionManager.start(myMovieClip_mc,{type:Iris,direction:Transition.IN,duration:1000,easing:Strong.easeOut,startPoint:5,shape:Iris.CIRCLE});
2>或者使用下面方法:startTransition
var myTM:TransitionManager = new TransitionManager(myMovieClip_mc);
myTM.startTransition({type:Iris,direction:Transition.IN,duration:300,easing:Strong.easeOut,startPoint:21,shape:Iris.CIRCLE});
注意:startPoint和shape是过渡效果Iris的参数
3>关于参数transParams:
Type:过渡效果
Direction:过度方向transition.IN或者OUT
Duration:时间(毫秒)
Easing:缓动效果
4>遮帘过渡:
Blinds、numStrips条纹数1-50、dimension垂直0水平1
淡化过渡:
Fade
飞行过渡:
Fly、startPoint
光圈过渡:
Iris、startPoint、shape:Iris.SQUARE方形Iris.CIRCLE圆形
照片过渡:
Photo
像素溶解过渡:
PixelDissolve、xSections水平部分1-50、ySections垂直部分1-50
旋转过渡:
Rotate、ccw顺时针false逆时针true、degrees旋转总共度数1-9999
挤压过度:
Squeeze、dimension水平0垂直1
划入/划出过渡:
Wipe、startPoint
缩放过渡:
Zoom
注意:缓动参数
easing: 缓动模式
None.easeIn Regular.easeIn Srong.easeIn Back.easeIn Elastic.easeIn
None.easeInOut Regular.easeInOut Srong.easeInOut Back.easeInOut Elastic.easeInOut
None.easeOut Regular.easeOut Srong.easeOut Back.easeOut Elastic.easeOut
从左到右 ,即从None到Elastic表示稳固系数,这里给运动的元件附加上一个虚拟的质量
None 很轻,施力就动
Regular 正常,同样施力就动
Srong.easeIn 比较重,需要施加更大的力, 给人的感觉就是动起来很费劲
Back.easeIn 运动之前,有一个向后的动作
Elastic.easeIn 正式运动之前,会前后往复几次
从上到下, 即easeNone 没有缓动 (只有None有这个属性)
easeIn 开始时缓动
easeInOut 开始和结束时缓动
easeOut 结束时缓动
- 使用Tween类动态创建补间动画:
1> fl.Transitions.Tween类构造函数的语法格式:
var myTween:Tween = new Tween(obj,prop,func,begin,finish,duration,useSeconds);
- obj:MC
prop:obj的属性x
func:缓动方法
begin:x开始值数字
finish:x结束值数字
duration:速度
useSeconds:true用秒,false用帧
例子:
import fl.transitions.Tween;
var myTween:Tween = new
Tween(myMovieClip_mc,"x",Elastic.easeOut,0,300,3,true);
2> Tween属性方法事件:
方法:
fForward()/rewind():快进的结尾和倒退到开头
nextFrame()/preFrame:下一帧和上一帧
resume()/stop()/start():返回继续播放,停止,从头开始
toString:返回类名称
yoyo():补间动画相反方向播放
属性:
Duration/finish/FPS/position/time都是只读
事件:
motionChanged:属性更改触发
motionFinished:完成触发
motionResumed:返回触发
motionStarted:开始触发
motionStoped:停止触发
第十九章 使用滤镜动态处理影片剪辑以增加特效
- 滤镜的包:flash.filters
import flash.filters.BevelFilter;
import flash.filters.DropShadowFilter;
var filter_1:BevelFilter = new
BevelFilter(5,45,0xB5FFC8,1,0x44FF73,1,5,5,1,1,"inner",false);
var filter_2:DropShadowFilter = new
DropShadowFilter(5,45,0x0BD43D,1,12,12,1,1,false,false,false);
var myFilters:Array = test.filters;
myFilters.push(filter_1);
myFilters.push(filter_2);
test.filters = myFilters;
第二十章 动态处理图形和位图以增加特效
- 使用flash.geom包动态处理图形
ColorTransform:算术方法设置实例的RGB颜色值和颜色转换
Matrix:表示一个转换矩阵,将一个坐标映射到另一个坐标
Point:某个位置,x/y
Rectangle:创建和修改矩形对象
Transform:收集有关应用于对象实例的颜色转换和坐标处理的数据
- 使用ColorTransform类动态变换影片剪辑的颜色:
import flash.geom.ColorTransform;
import flash.geom.Transform;
var myColorTransform:ColorTransform = new ColorTransform(1,-1,-1,1,97,0,0,0);
var myTransform:Transform = new Transform(myMovieClip);
myTransform.colorTransform = myColorTransform;
- 使用Matrix类动态变换影片剪辑的形状:
- 使用Point类动态获取像素点:
- 使用Rectangle类动态获取对象的区域:
- 动态绘制图形Graphic:
import flash.display.MovieClip;
var myMovieClip:MovieClip = new MovieClip();
this.addChild(myMovieClip);
var X:Number = 100;
var Y:Number = 100;
var R:Number = 100;
myMovieClip.graphics.clear();
myMovieClip.graphics.lineStyle(1,0x6688AA);
myMovieClip.graphics.beginFill(0xAABBCC,50);
myMovieClip.graphics.moveTo(X,Y);
myMovieClip.graphics.lineTo(X+R,Y);
myMovieClip.graphics.curveTo(R+X,Math.tan(Math.PI/8)*R+Y,Math.sin(Math.PI/4)*R+X,Math.sin(Math.PI/4)*R+Y);
myMovieClip.graphics.lineTo(X,Y);
myMovieClip.graphics.endFill();
- 绘图的使用方法:
drawCircle():绘制圆形
drawEllipse():绘制椭圆
drawRect():绘制矩形
drawRounRect():绘制圆角矩形
例子:
import flash.display.MovieClip;
var myMovieClip:MovieClip = new MovieClip();
this.addChild(myMovieClip);
myMovieClip.graphics.clear();
//定义线条类型
myMovieClip.graphics.lineStyle(1,0x6688AA);
//开始填充
myMovieClip.graphics.beginFill(0xAABBCC,50);
myMovieClip.graphics.drawRect(50,50,200,100);
//关闭填充
myMovieClip.graphics.endFill();
- 使用BitmapData类和Bitmap类动态处理位图:
Var myBitmapData:BitmapData = new BitmapData(width,height,[透明度],[fillColor]);
不懂?