经过实际的例子学习as3.0

更新时间:15-11-03 09:30 热度:376
 

首先声明:本人民代表大会菜鸟一个,刚接触as3不长,很多理念还没赶得及灌输,这些个case都是从网上down的,但由于解说是英文的,不顺利我们学习,我就担任一个translater,捎带脚儿可以让自个儿强化一下子知识。
水准有限,不正确难以避免,热烈欢迎大虾小虾,大鸟鸟儿指正。
下边进入了主题:
案件的例子1:知道得清楚新的事情机制和addchild的使用
解释明白:拖动小人到滑板上,而后拖动滑板,可以发觉小人已经跟滑板粘在了一块儿。
演习:http://www.live-my-life-with-yuyi.com/as3_cases/changing_parents/
代码
boarder_mc.addeventlistener(mouseevent.mouse_down, drag);
boarder_mc.addeventlistener(mouseevent.mouse_up, drop);
red_mc.addeventlistener(mouseevent.mouse_down, drag);
red_mc.addeventlistener(mouseevent.mouse_up, drop);
blue_mc.addeventlistener(mouseevent.mouse_down, drag);
blue_mc.addeventlistener(mouseevent.mouse_up, drop);
as3认为合适而使用了新的监听机制,并且注意到对每个mc的鼠标按下弹起都运用了相同的函数,这就需求在函数里判断事情的发生者,因此做出相应的处置。
function drag(event:mouseevent):void
{
if(event.target.name == "boarder_mc")
{
addchild(boarder_mc);
event.target.startdrag(true);
boarder_mc.x = mousex;
boarder_mc.y = mousey;
}
else
{
event.target.startdrag();
}
}
经过event.target.name来获得事情发生的对象名,as3里没有了root,addchild相当于把某个mc搬到达戏台上,实际上是timeline0.addchild(mc),同时保障该mc是在戏台的最顶层(as3里没有了深度管理)。
经过event.target来取得事情发生的对象
继续来看drop函数
function drop(event:mouseevent):void
{
event.target.stopdrag();
if(boarder_mc.hittestobject(red_mc))
{
red_mc.addchild(boarder_mc);
boarder_mc.x = 0;
boarder_mc.y = 0;
}
else if(boarder_mc.hittestobject(blue_mc))
{
blue_mc.addchild(boarder_mc);
boarder_mc.x = 0;
boarder_mc.y = 0;
}
}
当鼠标弹起时,啥也无论,先休止拖动,假如小上下团结滑板有重合地区范围,则将小人放到滑板里,滑板就像一个container,boarder_mc成了red_mc的child,将boarder_mc的x坐标和y坐标清零是为了将小人放到滑板的准确位置。
假如小人已经变成了滑板的child,那末再次拖动滑板时,因为又执行了一次addchild(boarder_mc);所以滑板的父类又成为了戏台。
整个儿案件的例子1的剖析至此终了,牵涉到的知识点无几,主要是知道得清楚一下子as3的语法。