我正在使用AS3程序,我正在使用Flash CS6;當選擇新對象時,AS3取消選擇其他對象
在我的遊戲中,屏幕上有一堆物體,但只有3個「包」物體。到目前爲止,我已經完成了這個工作,您可以點擊這些包中的一個來選擇它,並且它會以藍色突出顯示。當再次點擊同一個包時,它將被取消選中,並且藍色突出顯示將消失。
我用來突出顯示的技巧是把包放在一個圖層上,並在包的前面放一個看不透的藍色的隱形矩形。選擇包裝後,透明藍色將變爲可見。
這是我的代碼到目前爲止;
selecterLegendBlueEyes.bpName="Legend of Blue Eyes White Dragon"
selecterLegendBlueEyes.bpCost=1
selecterLegendBlueEyes.bpCards=5
selecterLegendBlueEyes.buttonMode=true
selecterLegendBlueEyes.useHandCursor=true
selecterSpellRuler.bpName="Spell Ruler"
selecterSpellRuler.bpCost=1
selecterSpellRuler.bpCards=5
selecterSpellRuler.buttonMode=true
selecterSpellRuler.useHandCursor=true
selecterMetalRaiders.bpName="Metal Raiders"
selecterMetalRaiders.bpCost=1
selecterMetalRaiders.bpCards=5
selecterMetalRaiders.buttonMode=true
selecterMetalRaiders.useHandCursor=true
//Just some property assigning to make the objects Movieclip buttons.
function bpIdentify(selecter:Object, selecterName:String, selecterCost:int, selecterCards:int)
{
if (selecter.alpha==0)
{
selecter.alpha=1;
selectCost.text="Cost: "+selecterCost+" DP/"+selecterCards+" Cards";
selectName.text="Selected: "+selecterName;
}
else if (selecter.alpha==1)
{
selecter.alpha=0;
selectCost.text="";
selectName.text="";
}
}
//The general selection function
function bpSelectLegendBlueEyes(e:MouseEvent):void
{
bpIdentify(selecterLegendBlueEyes, selecterLegendBlueEyes.bpName, selecterLegendBlueEyes.bpCost, selecterLegendBlueEyes.bpCards);
}
function bpSelectSpellRuler(e:MouseEvent):void
{
bpIdentify(selecterSpellRuler,selecterSpellRuler.bpName, selecterSpellRuler.bpCost, selecterSpellRuler.bpCards);
}
function bpSelectMetalRaiders(e:MouseEvent):void
{
bpIdentify(selecterMetalRaiders,selecterMetalRaiders.bpName, selecterMetalRaiders.bpCost, selecterMetalRaiders.bpCards);
}
//The functions that link to the main selection function that selects each pack
selecterLegendBlueEyes.addEventListener(MouseEvent.CLICK, bpSelectLegendBlueEyes);
selecterSpellRuler.addEventListener(MouseEvent.CLICK, bpSelectSpellRuler);
selecterMetalRaiders.addEventListener(MouseEvent.CLICK, bpSelectMetalRaiders);
//To activate the selection function when the pack is clicked
我想要做的就是讓這個當我點擊一包,我已經有另外一個包選擇,它將取消選擇包並選擇新包。
我知道一個方法來做到這一點,但它會包括爲每個特定的選擇功能添加一個取消選擇行的每個其他包。這僅僅只有3包就不會有什麼問題,但是我打算在未來增加更多的包,最多20包......這將導致不得不完全添加大約400條線。我不懶,我可以添加這些行,但每次添加一個新包時,我都需要爲每個選擇功能添加更多行,而且我很可能會犯一個錯誤,並將其全部弄亂有一點。
我首先想到的是,只要我點擊任何地方,包就會取消選擇,但這會是一個問題,因爲在選擇「購買」包後需要點擊幾件東西,包裹。
我想到一個想法,就是當我點擊另一個包時,所有其他包都將被取消選擇,通過某種方式告訴程序這些對象是「包」對象,並且每當一個包對象被點擊,所有其他包對象被取消選擇。
關於如何做到這一點的任何想法?
我覺得你認爲它比實際更復雜:)將每個'Pack'放在一個'DisplayObject'上,並在選擇'Pack'時循環遍歷所有子元素。保存當前選擇的「Pack」,如果不同,請選擇一個新的。 –