| ||
|
Ползване на един event listener за контрол над много елементиУрокът се отнася за AS3.0.Аз съм ползвал Flex framework, но същото може да бъде направено най-спокойно и във флаш. Ползването на един event listener за много бутони, които правят различни действия е полезно откъм код.Event listener-а е функция, която "слуша" кога дадено събитие е настъпило на сцената. Пример : Бутон се натиска , евент-а се dispatchva и тръгва по апликацията.Функцията улавя това събитие и действа нататък с написания код. Цялата работа е доста лесна и става по следния начин : function clickEventListener(event:MouseEvent) { trace(event.target.label); } Аргументът на фукнцията - event, който е от тип MouseEvent може да ползва специалните си функции, за да се определи кой бутон е натиснат. Ето и примерен код от Flex framework с коментари: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> <mx:Script> <![CDATA[ private function doClick(event:MouseEvent):void { output.text += event.target.label + ' was clicked ' + '\n' // funkciqta e private --> moje da se izpolzva samo v tozi dokument/class // funkciqta priema za parametyr event ot tip MouseEvent, kato 4rez nego opredelqme // koi button e natisnat.Tova moje da bude mnogo polezno v redica ot slu4ai! //Funkciqta 6te deistva i s event:Event, tyi kato MouseEvent nasledqva vsi4ki metodi na Event class-a //no MouseEvent ima metodi, koito se otnasqt samo kym nego! } >> </mx:Script> <mx:HBox> <mx:Button label="The big bad green buttton" click="doClick(event)" height="31" fillAlphas="[1.0, 1.0]" fillColors="[#56E119, #4BC017]" cornerRadius="11"/> <mx:Button label="The even badder yellow button" click="doClick(event)" height="31" fillAlphas="[1.0, 1.0]" fillColors="[#EBDF25, #F6EB3B]" cornerRadius="11"/> <mx:Button label="Click the red !" click="doClick(event)" cornerRadius="11" height="31" fillAlphas="[1.0, 1.0]" fillColors="[#F11111, #F54343]"/> <mx:Button label="the small blue button" click="doClick(event)" cornerRadius="11" fillAlphas="[1.0, 1.0]" fillColors="[#5173F5, #798AF1]"/> </mx:HBox> <!-- Text area-ta 6te sluji kato konzola za output.Zadadeni sa i id, viso4ina i 6iro4ina. --> <mx:TextArea id="output" width="396" height="151" /> </mx:Application> Кратко обяснение : бутона задава event listener на click event-a чрез click="function(event)", a функцията се намира във скрипт блока. Чрез event.target посочваме обекта ( бутона ), а чрез .label вече може да имаме по-голяма точност. Същото може да стане и с event.target.id Това може да бъде полезно както за 1 бутон, за да се обърнем към него, така и за много бутони, за да се изпълни кода в една функция. Във флаш ще използвате button.addEventListener(MouseEvent.CLICK, onClick) Ето и демо, за да стане по-ясно : Demol
|
|