AS3.0實(shí)例學(xué)習(xí) 熟悉新的事件機(jī)制和addChild的運(yùn)用
更新時(shí)間:2007年12月12日 21:51:01 作者:
首先聲明:本人大菜鳥(niǎo)一個(gè),剛接觸AS3不久,許多理念還沒(méi)來(lái)得及灌輸,這些case都是從網(wǎng)上down的,但因?yàn)榻庹f(shuō)是英文的,不利我們學(xué)習(xí),我就充當(dāng)一個(gè)translater,順便可以讓自己鞏固一下知識(shí)。 水平有限,錯(cuò)誤難免,歡迎大蝦小蝦,大鳥(niǎo)小鳥(niǎo)指正。
下面進(jìn)入正題:
案例1:熟悉新的事件機(jī)制和addChild的運(yùn)用
說(shuō)明:拖動(dòng)小人到滑板上,然后拖動(dòng)滑板,可以發(fā)現(xiàn)小人已經(jīng)跟滑板粘在了一起。
演示: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采用了新的監(jiān)聽(tīng)機(jī)制,而且注意到對(duì)每個(gè)mc的鼠標(biāo)按下彈起都使用了相同的函數(shù),這就需要在函數(shù)里判斷事件的發(fā)生者,從而做出相應(yīng)的處理。
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();
}
}
通過(guò)event.target.name來(lái)取得事件發(fā)生的對(duì)象名,AS3里沒(méi)有了root,addChild相當(dāng)于把某個(gè)mc搬到了舞臺(tái)上,其實(shí)是TimeLine0.addChild(mc),同時(shí)保證該mc是在舞臺(tái)的最頂層(AS3里沒(méi)有了深度管理)。
通過(guò)event.target來(lái)獲取事件發(fā)生的對(duì)象
接著來(lái)看drop函數(shù)
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;
}
}
當(dāng)鼠標(biāo)彈起時(shí),啥也不管,先停止拖動(dòng),如果小人和滑板有重合區(qū)域,則將小人放到滑板里,滑板就像一個(gè)container,boarder_mc成了red_mc的child,將boarder_mc的x坐標(biāo)和y坐標(biāo)清零是為了將小人放到滑板的正確位置。
如果小人已經(jīng)成為了滑板的child,那么再次拖動(dòng)滑板時(shí),由于又執(zhí)行了一次addChild(boarder_mc);所以滑板的父類(lèi)又變成了舞臺(tái)。
整個(gè)案例1的分析到此結(jié)束,涉及的知識(shí)點(diǎn)不多,主要是熟悉一下AS3的語(yǔ)法。
打包下載
下面進(jìn)入正題:
案例1:熟悉新的事件機(jī)制和addChild的運(yùn)用
說(shuō)明:拖動(dòng)小人到滑板上,然后拖動(dòng)滑板,可以發(fā)現(xiàn)小人已經(jīng)跟滑板粘在了一起。
演示:http://www.live-my-life-with-yuyi.com/as3_cases/changing_parents/
代碼:
復(fù)制代碼 代碼如下:
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采用了新的監(jiān)聽(tīng)機(jī)制,而且注意到對(duì)每個(gè)mc的鼠標(biāo)按下彈起都使用了相同的函數(shù),這就需要在函數(shù)里判斷事件的發(fā)生者,從而做出相應(yīng)的處理。
復(fù)制代碼 代碼如下:
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();
}
}
通過(guò)event.target.name來(lái)取得事件發(fā)生的對(duì)象名,AS3里沒(méi)有了root,addChild相當(dāng)于把某個(gè)mc搬到了舞臺(tái)上,其實(shí)是TimeLine0.addChild(mc),同時(shí)保證該mc是在舞臺(tái)的最頂層(AS3里沒(méi)有了深度管理)。
通過(guò)event.target來(lái)獲取事件發(fā)生的對(duì)象
接著來(lái)看drop函數(shù)
復(fù)制代碼 代碼如下:
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;
}
}
如果小人已經(jīng)成為了滑板的child,那么再次拖動(dòng)滑板時(shí),由于又執(zhí)行了一次addChild(boarder_mc);所以滑板的父類(lèi)又變成了舞臺(tái)。
整個(gè)案例1的分析到此結(jié)束,涉及的知識(shí)點(diǎn)不多,主要是熟悉一下AS3的語(yǔ)法。
打包下載
相關(guān)文章
超級(jí)SWF跟蹤器-巧用LocalConnection的代碼
超級(jí)SWF跟蹤器-巧用LocalConnection的代碼...2007-03-03xflash第一次升級(jí),xfml功能被強(qiáng)化
xflash第一次升級(jí),xfml功能被強(qiáng)化...2006-12-12關(guān)于FLASH與XML交互應(yīng)用中的理解
關(guān)于XML在FLASH中的應(yīng)用,以前寫(xiě)過(guò)幾篇。也收集了幾篇來(lái)自網(wǎng)絡(luò)的。不過(guò),都是一些非常簡(jiǎn)單而常用的。在這里,我把XML的其他相關(guān)說(shuō)明總結(jié)一下。有不足之處,希望大家能相互補(bǔ)充。只為了一個(gè)共同的目的:共同提高。2008-04-04SWF自適應(yīng)布局技巧 (Rapid Flash Development)快速Flash開(kāi)發(fā)
當(dāng)我們開(kāi)發(fā)全站式Flash應(yīng)用時(shí),希望呈現(xiàn)一個(gè)鋪滿(mǎn)瀏覽器屏幕的Flash.2008-12-12用as檢測(cè)服務(wù)器端的某個(gè)flv文件是否存在的代碼
用as檢測(cè)服務(wù)器端的某個(gè)flv文件是否存在的代碼...2007-03-03