Adobe Flex অ্যাপ্লিকেশনে Event Dispatcher এবং Listener ব্যবহারের মাধ্যমে আপনি ইউজার ইন্টারঅ্যাকশন, ইভেন্ট এবং অ্যাপ্লিকেশনের কার্যক্ষমতা পরিচালনা করতে পারেন। Flex ফ্রেমওয়ার্কে ইভেন্ট ডিপ্যাচিং (dispatching) এবং ইভেন্ট লিসেনিং (listening) একটি গুরুত্বপূর্ণ অংশ, কারণ এটি ইউজারের ইনপুটের প্রতি প্রতিক্রিয়া জানাতে সহায়ক।
ইভেন্ট ডিপ্যাচিং এবং লিসেনিং এর ভূমিকা
- Event Dispatcher: এটি ইভেন্ট তৈরি করে এবং সেগুলি বিতরণ (dispatch) করে। যখন কোনো ইউজার ইন্টারঅ্যাকশন ঘটে (যেমন বাটনে ক্লিক করা), তখন Flex অ্যাপ্লিকেশনটি একটি ইভেন্ট ডিপ্যাচ করতে পারে।
- Event Listener: এটি ইভেন্টগুলির প্রতি প্রতিক্রিয়া জানায়। যখন একটি ইভেন্ট ডিপ্যাচ করা হয়, তখন Listener সেই ইভেন্ট গ্রহণ করে এবং প্রাসঙ্গিক কাজ সম্পাদন করে।
Event Dispatcher এবং Listener এর কাজের প্রক্রিয়া
- Event Dispatcher: Flex অ্যাপ্লিকেশন যখন কোনো ইভেন্ট (যেমন,
click,change,mouseOverইত্যাদি) তৈরি করে, তখন এটি একটি ইভেন্ট অবজেক্ট তৈরি করে এবং এটি যেকোনো EventDispatcher-এ ডিপ্যাচ করে। ইভেন্টের তথ্য যেমন টাইপ, প্রোপার্টি ইত্যাদি ইভেন্ট অবজেক্টে সংরক্ষিত থাকে। - Event Listener: Listener একটি ফাংশন বা মেথড হিসেবে কাজ করে যা ইভেন্টটি ডিপ্যাচ হওয়ার পরে সেটি গ্রহণ করে এবং তার ভিত্তিতে কার্যক্রম সম্পাদন করে।
Event Dispatcher এবং Listener ব্যবহার করার ধাপ
১. ইভেন্ট ডিপ্যাচিং (Event Dispatching)
ইভেন্ট ডিপ্যাচ করতে, আপনি EventDispatcher অথবা UIComponent এর মেথড ব্যবহার করতে পারেন। Flex-এ কিছু সাধারণ ইভেন্ট যেমন click, change, mouseOver ইত্যাদি স্বয়ংক্রিয়ভাবে ডিপ্যাচ করা হয়, তবে আপনি কাস্টম ইভেন্টও তৈরি করতে পারেন।
কাস্টম ইভেন্ট তৈরি করা:
import flash.events.Event;
public class MyCustomEvent extends Event {
public static const MY_EVENT:String = "myEvent";
public var message:String;
public function MyCustomEvent(type:String, message:String) {
super(type);
this.message = message;
}
override public function clone():Event {
return new MyCustomEvent(type, this.message);
}
}
ইভেন্ট ডিপ্যাচ করা:
var customEvent:MyCustomEvent = new MyCustomEvent(MyCustomEvent.MY_EVENT, "Hello from custom event!");
dispatchEvent(customEvent);
২. ইভেন্ট লিসেনিং (Event Listening)
ইভেন্ট শোনা এবং তার জন্য প্রস্তুত থাকার জন্য addEventListener মেথড ব্যবহার করা হয়।
ইভেন্ট লিসেনার যোগ করা:
myButton.addEventListener(MouseEvent.CLICK, onButtonClick);
private function onButtonClick(event:MouseEvent):void {
trace("Button clicked!");
}
এখানে myButton হলো একটি UI কম্পোনেন্ট যা MouseEvent.CLICK ইভেন্ট শুনবে, এবং যখন বাটনটি ক্লিক করা হবে, তখন onButtonClick ফাংশনটি চালু হবে।
Flex-এ EventDispatcher এবং Listener এর সাধারণ ব্যবহার
Flex অ্যাপ্লিকেশনে ইভেন্ট ডিপ্যাচ এবং লিসেনিং খুব সাধারণ এবং গুরুত্বপূর্ণ। এটি ডেভেলপারদের অ্যাপ্লিকেশনটিতে ইন্টারঅ্যাকশনের সাথে যুক্ত কার্যক্রম পরিচালনা করতে সাহায্য করে।
উদাহরণ ১: বাটন ক্লিক ইভেন্ট ডিপ্যাচ করা এবং শোনা
<s:Button id="myButton" label="Click Me" />
myButton.addEventListener(MouseEvent.CLICK, onButtonClick);
private function onButtonClick(event:MouseEvent):void {
trace("Button clicked!");
dispatchEvent(new Event("myCustomEvent"));
}
addEventListener("myCustomEvent", customEventListener);
private function customEventListener(event:Event):void {
trace("Custom Event triggered!");
}
- myButton একটি বাটন, যা MouseEvent.CLICK ইভেন্ট শুনবে।
- বাটনে ক্লিক করার পর onButtonClick ফাংশন চালু হবে এবং একটি কাস্টম ইভেন্ট
myCustomEventডিপ্যাচ করবে। - কাস্টম ইভেন্টটি customEventListener ফাংশন দ্বারা শোনা হবে এবং একটি বার্তা প্রদর্শিত হবে।
উদাহরণ ২: ডাটা বাইন্ডিংয়ের মাধ্যমে ইভেন্ট ডিপ্যাচ করা
<s:TextInput id="inputField" width="200" />
<s:Label id="outputLabel" text="{inputField.text}" />
inputField.addEventListener(Event.CHANGE, onTextChange);
private function onTextChange(event:Event):void {
trace("Text changed: " + inputField.text);
}
এখানে inputField এর টেক্সট পরিবর্তন হলেই onTextChange ফাংশন ট্রিগার হবে, এবং outputLabel তে সেই টেক্সট প্রদর্শিত হবে।
ইভেন্ট প্রোপাগেশন এবং বুবলিং
Flex ইভেন্ট প্রোপাগেশন এবং বুবলিং (bubbling) সাপোর্ট করে। এর মানে হলো যে একটি ইভেন্ট একটি উপাদান থেকে তার পিতামাতার দিকে প্রবাহিত হতে পারে।
- বুবলিং: এটি হল ইভেন্টের প্রবাহ যেখানে ইভেন্টটি প্রথমে তার টার্গেট (যেমন বাটন) থেকে শুরু হয়ে তার পিতামাতা (যেমন প্যানেল) পর্যন্ত পৌঁছে।
- 캡চিং: এটি হল ইভেন্টের প্রবাহ যেখানে ইভেন্টটি প্রথমে পিতামাতা থেকে শুরু হয়ে তার টার্গেট উপাদানে পৌঁছায়।
Best Practice:
আপনি stopPropagation() মেথড ব্যবহার করে ইভেন্ট প্রোপাগেশন থামাতে পারেন:
event.stopPropagation();
ইভেন্ট লিসেনার এবং মেমরি ব্যবস্থাপনা
ইভেন্ট লিসেনার ব্যবহারের সময়, বিশেষ করে দীর্ঘকালীন চলমান অ্যাপ্লিকেশনে মেমরি লিক প্রতিরোধের জন্য ইভেন্ট লিসেনারগুলো সঠিকভাবে ম্যানেজ করা উচিত। ইভেন্ট লিসেনার সরানোর জন্য removeEventListener মেথড ব্যবহার করা হয়।
myButton.removeEventListener(MouseEvent.CLICK, onButtonClick);
সারাংশ
- Event Dispatcher এবং Event Listener Flex অ্যাপ্লিকেশনের মূল অংশ, যা ইভেন্ট ড্রিভেন ইন্টারঅ্যাকশন পরিচালনা করে।
- Event Dispatcher ব্যবহার করে আপনি ইভেন্ট তৈরি ও ডিপ্যাচ করতে পারেন, এবং Event Listener ব্যবহার করে ইভেন্টগুলোকে শোনার জন্য মেথড সেট করতে পারেন।
- ইভেন্ট প্রোপাগেশন (বুবলিং) এবং মেমরি ব্যবস্থাপনা ইভেন্ট হ্যান্ডলিংয়ের গুরুত্বপূর্ণ অংশ।
- Flex অ্যাপ্লিকেশনে ইভেন্ট ডিপ্যাচিং এবং লিসেনিং কার্যকরভাবে ইউজারের ইনপুট এবং অ্যাপ্লিকেশনের ইন্টারঅ্যাকশন পরিচালনা করে।
Event Dispatcher এবং Listener এর সঠিক ব্যবহার Flex অ্যাপ্লিকেশনগুলিকে আরও ইন্টারঅ্যাকটিভ এবং শক্তিশালী করে তোলে।
Read more