2014-06-10 105 views
0

我正在使用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條線。我不懶,我可以添加這些行,但每次添加一個新包時,我都需要爲每個選擇功能添加更多行,而且我很可能會犯一個錯誤,並將其全部弄亂有一點。

我首先想到的是,只要我點擊任何地方,包就會取消選擇,但這會是一個問題,因爲在選擇「購買」包後需要點擊幾件東西,包裹。

我想到一個想法,就是當我點擊另一個包時,所有其他包都將被取消選擇,通過某種方式告訴程序這些對象是「包」對象,並且每當一個包對象被點擊,所有其他包對象被取消選擇。

關於如何做到這一點的任何想法?

+0

我覺得你認爲它比實際更復雜:)將每個'Pack'放在一個'DisplayObject'上,並在選擇'Pack'時循環遍歷所有子元素。保存當前選擇的「Pack」,如果不同,請選擇一個新的。 –

回答

1

我會寫一個答案而不是評論,因爲我覺得你可以讓你的代碼更加緊湊。首先,您應該使用Event類的屬性。這將爲您節省許多編碼。現在

selecterLegendBlueEyes.addEventListener(MouseEvent.CLICK, bpSelect); 
selecterSpellRuler.addEventListener(MouseEvent.CLICK, bpSelect); 
selecterMetalRaiders.addEventListener(MouseEvent.CLICK, bpSelect); 

function bpSelect(e:MouseEvent):void 
{ 
    var selectedMC:MovieClip = e.target as MovieClip; 
    bpIdentify(selectedMC, selectedMC.bpName, 
       selectedMC.bpCost, selectedMC.bpCards); 
} 

,對於取消選擇的一部分,你可以一個指向選定MovieClip存儲在一個變量,說currentlySelected然後添加一些邏輯來選擇功能是這樣的:

function bpSelect(e:MouseEvent):void 
{ 
    deselectAll(); 
    var selectedMC:MovieClip = e.target as MovieClip; 
    if (currentlySelected == selectedMC) 
    { 
     currentlySelected = null; 
    } 
    else 
    { 
     currentlySelected = selectedMC; 
     bpIdentify(selectedMC, selectedMC.bpName, 
        selectedMC.bpCost, selectedMC.bpCards); 
    } 
} 
+0

選擇部分很棒;我有點新AS3,我不知道e.target .. 問題是與取消部分,功能「取消所有」...我的整個問題在於該功能;我將如何取消選擇所有其他包? 另外,當前選擇的變量,我想它會看起來像: var currentlySelected:MovieClip在程序的頂部...或者我錯了嗎? – MNOPYZ

+0

PS:我想我現在明白你的意思是取消選擇功能;一個在所有包上運行Alpha = 0位的函數......我想我會設法做到這一點。可能有點大,但不應該有問題,我會通知我是否再次搞砸xD – MNOPYZ

+0

哈哈,完美無缺!非常感謝您的幫助^ - ^ – MNOPYZ