给大家带来Flash AS3教程:Level2D类-Flash actionscript
Flash动画说到底就是“遮罩+补间动画+逐帧动画”与元件(主要是影片剪辑)的混合物,通过这些元素的不同组合,从而可以创建千变万化的效果。后面进修了FlashAS3教程:ApplySocket类,
http://www.webjx.com/files/media/Level2D.swf
该类是关于同立体物体的深度复杂的主动办理类,只是做到了复杂的假造社区等,人物,修建物等深度分列,太庞大的估量就弄不定了,可是能够承继这个类持续界说
index.com.main.Leval2D类:
代码:publicclassLevel2DimplementsIEventDispatcher
实际:IEventDispatcher接口
对统一容器中的物体以Y坐标为基准举行主动深度办理
机关函数:
publicfunctionLevel2D(range_:DisplayObjectContainer)
参数暗示要对哪一个容器中的工具举行主动深度办理
手动分列深度办法:
publicfunctionreset():Array
前往分列后的工具数组,假如层级无改动,则前往以后工具数组
层级改动将调剂事务Level2DEvent.LEVEL_RESET
猎取工具列表办法:
publicfunctiongetDisplay(arg:Object=null):Array
猎取以后办理容器中,以arg体例过滤后的一切工具
若arg为空,则前往以后容器中一切工具列表
若arg为字符串,则前往以后容器中一切工具的arg属性列表
若arg为Object,则前往以后容器中,切合arg一切属性的工具列表
遍历办法:
publicfunctionforEach(fun:Function,arg:Object=null):void
以某种体例遍历一切工具,而且有arg体例举行过滤遍历
第一个参数,在遍历的时分,每遍历到一个工具,城市挪用fun函数,将显现工具和分列地位传进来,比方:
functioncallback(_display:DisplayObject,index:int){}
第二个参数,同等于getDisplay中arg参数
公有承继办法:
protectedfunctioninOrder(tmpAr:Array):void
以某种特定的数组举行深度改动
该办法必需承继该类,它的子集即可以看成公有属性来挪用该办法,内部不成见!
设置立即属性:(只写)
publicfunctionsetisTime(_isTime:Boolean):void
当参数为true,则暗示层级在能够改动的时分,会主动举行改动
当参数为false,则暗示必要手动挪用reset办法,才干改动深度分列
range属性:(只读)
publicfunctiongetrange():DisplayObjectContainer
当实例化办理容器后,就没法修正该属性了,只要经由过程挪用range来读取属性了
举例:
下面谁人flash的源代码,三个小方块都是能够拖拽的,CODE:
importindex.com.main.Level2D;
importindex.com.events.Level2DEvent;
varl2:Level2D=newLevel2D(this);
l2.addEventListener(Level2DEvent.LEVEL_RESET,levelResetFun);
l2.isTime=true;
functionlevelResetFun(e:Level2DEvent){
trace(l2.getDisplay("x"));//猎取以后一切工具的x属性
trace(l2.getDisplay({y:0,x:0}));//猎取以后一切工具,xy属性都即是0的工具
/**
*输入:
*137,0,229
*
*/
}
mc1.addEventListener(MouseEvent.MOUSE_DOWN,funa);
mc2.addEventListener(MouseEvent.MOUSE_DOWN,funa);
mc3.addEventListener(MouseEvent.MOUSE_DOWN,funa);
mc1.addEventListener(MouseEvent.MOUSE_UP,funb);
mc2.addEventListener(MouseEvent.MOUSE_UP,funb);
mc3.addEventListener(MouseEvent.MOUSE_UP,funb);
functionfuna(e:MouseEvent):void{
e.target.startDrag();
}
functionfunb(e:MouseEvent):void{
e.target.stopDrag();
}Level2D源代码:CODE:
packageindex.com.truss{
importflash.events.EventDispatcher;
importflash.events.IEventDispatcher;
importflash.events.Event;
importflash.display.DisplayObjectContainer;
importflash.display.DisplayObject;
importindex.com.events.Level2DEvent;
publicclassLevel2DimplementsIEventDispatcher{
privatevardispatcher:EventDispatcher;
privatevar_range:DisplayObjectContainer;
publicfunctionLevel2D(range_:DisplayObjectContainer){
dispatcher=newEventDispatcher(this);
_range=range_;
}
//重排
publicfunctionreset():Array{
vartmpAr:Array=getDisplay();
vargetYAr:Array=getDisplay("y");
varaddYAr:Array=getYAr.concat().sort(16);
if(getYAr.toString()!=addYAr.toString()){
inOrder(tmpAr.sortOn("y",16));
//公布层级改动事务
dispatcher.dispatchEvent(newLevel2DEvent(Level2DEvent.LEVEL_RESET));
}
getYAr=addYAr=null;
returntmpAr;
}
//前往以后局限一切工具
publicfunctiongetDisplay(arg:Object=null):Array{
vari:int;
vartmpAr:Array=newArray;
varnum:int=_range.numChildren;
if(arg==null){
for(i=0;i<num;i++)tmpAr.push(_range.getChildAt(i));
}elseif(argisString){
for(i=0;i<num;i++)tmpAr.push(_range.getChildAt(i));
}else{
for(i=0;i<num;i++){
vardis:DisplayObject=_range.getChildAt(i);
varisEnter:Boolean=true;
for(varindex:Stringinarg){
if(dis!=arg){
isEnter=false;
break;
}
}
if(isEnter)tmpAr.push(dis);
dis=null;
}
}
returntmpAr;
}
//以特定体例遍历该局限的显现工具
publicfunctionforEach(fun:Function,arg:Object=null):void{
vartmpAr:Array=getDisplay(arg);
for(vari:int=0;i<tmpAr.length;i++){
varstr:String=fun(tmpAr,i);
if(str=="true")return;
}
tmpAr=null;
}
//给定一个排序数组,举行排序
protectedfunctioninOrder(tmpAr:Array):void{
for(vari:int=0;i<tmpAr.length;i++)_range.addChild(tmpArasDisplayObject);
}
//设置及时重排
publicfunctionsetisTime(_isTime:Boolean):void{
if(_isTime)_range.addEventListener(Event.ENTER_FRAME,resetFun);
else_range.removeEventListener(Event.ENTER_FRAME,resetFun);
}
//及时重排
privatefunctionresetFun(e:Event):void{
reset();
}
//前往操纵地区
publicfunctiongetrange():DisplayObjectContainer{
return_range;
}
//侦听
publicfunctionaddEventListener(type:String,listener:Function,useCapture:Boolean=false,priority:int=0,useWeakReference:Boolean=false):void{
dispatcher.addEventListener(type,listener,useCapture,priority,useWeakReference);
}
//调剂
publicfunctiondispatchEvent(event:Event):Boolean{
returndispatcher.dispatchEvent(event);
}
//是不是含有侦听
publicfunctionhasEventListener(type:String):Boolean{
returndispatcher.hasEventListener(type);
}
//移除侦听
publicfunctionremoveEventListener(type:String,listener:Function,useCapture:Boolean=false):void{
dispatcher.removeEventListener(type,listener,useCapture);
}
//反省侦听
publicfunctionwillTrigger(type:String):Boolean{
returndispatcher.willTrigger(type);
}
}
}Level2DEvent类源代码:CODE:
packageindex.com.events{
importflash.events.Event;
publicclassLevel2DEventextendsEvent{
publicstaticconstLEVEL_RESET:String="levelReset";
publicfunctionLevel2DEvent(type:String){
super(type);
}
}
}
将多个Flash作品转化为屏保程序。◇所生成的屏保程序能进行全屏预览、窗口预览、设置密码等操作。 作为奖赏,你可以使用关键祯动画支持和tweening-两个最主要的节省时间的方式。本质上,关键祯是动画中显著事件发生的位置。 富媒体可应用于各种网络服务中,如网站设计、电子邮件、BANNER、BUTTON、弹出式广告、插播式广告等。 它包含了下列常见的形式之一或者几种的组合:流媒体、声音、Flash、以及Java、Javascript、DHTML等程序设计语言。 在网络营销中所提供的利益。如果我们仔细看看国内外的专业网站,很少看到应用FLASH格式的广告,如网络上的知名网站。相信它们并不缺乏FLASH图片的制作力量。 flash的优缺点可以如何运用呢? 在网络营销中所提供的利益。如果我们仔细看看国内外的专业网站,很少看到应用FLASH格式的广告,如网络上的知名网站。相信它们并不缺乏FLASH图片的制作力量。 flash 有这么多的优势,那么它的优缺点和设计方面的关系是什么? Flash也支持alpha通道,这会使设计者高兴。没有太多的技术性,alpha通道是附加在图像上的信息 - 允许图像以不同的方式渲染。
页:
[1]