سوالی در مورد evt.target

niny-goloo

Member
سلام
دوستان گرامی (البته من فقط اینجا یه نفرو دیدم :دی )
من قصد دارا یه چیزی شبیه به RadioButton ایجاد کنم
خوب؟
RadioButton ها باید یه خصوصیات خیلی مهم یعنی گروه داشته باشند و در گروهشون فقط یکیشون انتخاب شده باشه.
چون خیلی وقت واسه نوشتن کامپوننتش نداشتم
من یک سمبل Movieclip توی کتابخونه ساختم و تو کلاس همپوشانش دستوراتی که برای انتخاب و علامت دار کردنش هست رو نوشتم، این سمبل از سه تا سمبل دیگه (دکمه دایره ای کوچیک برای نشان دادن انتخاب بود یا عدم انتخاب, پس زمینه، یه تکست فیلد از نوع (RTL) ) تشکیل شده.
حالا تو فایل اصلیم چندتا نمونه از این رو ساختم. ولی نمیدونم چه جوری میشه تشخیص داد که رو چه دکمه ای کلیک شده.
فکر میکردم که اگه خصوصیات نام به نمونه ای که ساختم بدم بتونم با getChildByName بهش دسترسی داشته باشم و با دستور evt.target.name بتونم چک کنم رو چه دکمه ای کلیک شده. ولی حالا متوجه شدم که این target نمونه ای نیست که ساختم بلکه سمبل های داخلیش هستن که روشون کلیک میکنم.
میخوام بهش بفهمونم که نباید با کلیک رو نمونه ای که ساختم سمبل های داخلیش رو به عنوان هدف برگردونه
همه این توضیحات رو میتونید تو نمونه ای که ضمیمه هست ببینید.
 

پیوست ها

  • RadioButton.rar
    36.4 کیلوبایت · بازدیدها: 42

++Hadi++

Active Member
می تونین به هر کدوم یه متغیر آی دی اختصاص بدین تا مثلا از صفر تا n-1 بره و با کلیک رو هر کدوم، یه متغیر static یا بهتر بگم global یه کلاس رو مساوی اون آی دی کنین تا هر موقع خواستین چک کنین که کدوم کلیک شده، از روی اون متغیر بفهمین. امضای من آموزش اکشن 3 از صفر فصل چهارم یا شی گرایی در مورد متغیر استاتیک و همپوشانی کلاس و ... توضیح دادم.
 

niny-goloo

Member
کاکو جان اون آموزشتون رو خوندم. خیلی عالی بود. تقریبا شروع یادگیریم با اون بوده.
تعریف یه متغییر Globol یه کم اختلال ایجاد میکنه تو برنامه ام.
من این کار رو به صورت بَرَره ای انجام دادم :دی
اومدم یه دکمه مخفی درست کردم و گذاشتم رو MovieClip م
و یه متغییر رشته ای Public و نه static تعریف کردم. که بعد اینکه تو برنامه اصلی این متغییر مقدار داده میشه تو کلاس همپوشانی شده اونو به عنوان نام به اون دکمه ای که ساختم میده. اینو بعدا از اینکه پست دادم انجام دادم. احساس کردم یه کم مشکل ساز شاید بشه.

حالا برای تشخیص اینکه چه دکمه ای کلیک شده و چه گزینه ای باید علامت دار باشه اومدم توی رخداد کلیک همه گزینه ها گذاشتم که تمام اشای موجود روی صحنه رو چک کنه که ایا از نوع دکمه من هستن یا نه و اگه بودن چک میکنه که نام کلیدی که فشرده شده برابر با اونی نباشه که کلیک شده و در این حالت یه متغییر تو کلاس همپوشان رو false میکنه و با یه متد میگم اگه اون متغیر false بود گزینه رو از حالت انتخاب خارج کن
اینجوری شده در نهایت کدش
PHP:
import MojiComponent.*;
import flash.events.MouseEvent;
import flash.events.Event;
var newRadio:MojiRadioBox = new MojiRadioBox();
var itemArr:Array = ["گزینه اول","دومین گزینه","سومین گزینه"];
var count:Number = 0;
for each (var item:String in itemArr)
{
	newRadio = new MojiRadioBox();
	newRadio.x = 100;
	newRadio._name = "item" + count;
	newRadio.MojiLabel(item);
	newRadio.y = count * 50;
	addChild(newRadio);
	newRadio.addEventListener(MouseEvent.CLICK,itemClick);
	count++;
}
function itemClick(e:Event)
{
	for (var obj:Number=0; obj<numChildren; obj++)
	{
		if (getChildAt(obj) is MojiRadioBox)
		{
			if (e.target.name != (getChildAt(obj) as MojiRadioBox)._name )
			{
				trace((getChildAt(obj) as MojiRadioBox)._name);
				(getChildAt(obj) as MojiRadioBox).enable=false;
				(getChildAt(obj) as MojiRadioBox).checkEnable();
			}
			else
			{
				(getChildAt(obj) as MojiRadioBox).enable=true;
				(getChildAt(obj) as MojiRadioBox).checkEnable();
			}
		}
	}
}
می خوام ببینم راهی که رفتم درسته؟ احتمالا میشه با eventDispatch و dispatchEvent هم این کارو انجام بدیم ولی من بلد نبودم.
میشه لطف کنید اونی که ضمیمه کردم ببینی و بگی چه کار میتونم انجام بدم که یه کم منطقش درست تر بشه
 

پیوست ها

  • RadioButton.rar
    36.9 کیلوبایت · بازدیدها: 27

++Hadi++

Active Member
البته radio button
رو می تونین یه اسم گروهی بش بدین تا در این گروه در هر لحظه فقط یکیشون فعال شه...فک کنم group name باشه که چنتا رو به یه گروه نسبت می دین تا فقط بکیشون روشن باشند...
 

niny-goloo

Member
کاکو جان من از را radioButton های خود فلش استفاده نکردم. بله میدونم که میشه چندتا radioButton رو تو یه گروه گذاشت و در هر لحظه فقط یکیشون فعال باشه.
اقا هادی یه سوال؟ اصلا پست قبلی منو خوندید؟ من انتظاری برای جواب ندارم نمیخوام طلبکارانه هم برخورد کنم. ولی یه کم فکر نمیکنین سرسری جواب دادین؟
شرمنده
 

++Hadi++

Active Member
خیلی راهها هست.
من حقیقتش وقت ندارم مطالب شما رو کامل بخونم... من الان سر کارم و نمی تونم خیلی وقت بذارم... ببخشید...بای...
 

niny-goloo

Member
بله
اینو متوجه شدم خودم کاملا که وقت ندارید :sad:
هر در حال از اینکه وقت گذاشتید جواب دادین ممنونم :rose:
 

++Hadi++

Active Member
خوب یه وقفه ایجاد شد می تونم سوالتو جواب بدم.
بهترین راهش اینه.
ابتدا شما یه آرایه تعریف می کنین یا Object یا اصلا اسم برا هر کدوم از rbutton هاتون و این اسم رو به صورت صعودی مثلا از صفر یا 1 شروع می کنین و اگه شما تو آرایه بزاری ، خوب شماره خونه آرایه مهم می شه. بعد یه متغیر تعریف می کنین از نوع int و هر بار که یکی از اینا کلیک و انتخاب شدند، در تابع eventListener رویداد کلیک اون، آی دی اونو یا name اونو که از قضا شماره آی دی شم روشه به صورت int به اون متغیر می دین تا اون متغیر بدونه . در نهایت قبل از اینکه اون متغیر رو تغییر بدین، rButton مربوط به قبل رو که قعلا تو متغیره رو uncheck می کنین و اونو به صورت checked در می یارین .
بهتون سعی می کنم تو این چند روزه یه سمپل درست کنم .البته اگه اون باتن هاتون از نوع مووی کلیپ باشه ، چون کلاس مووی کلیپها داینامیک هست می تونین هر آی دی یا اسمی خواستین بهش بدین...
 

niny-goloo

Member
ببینید من یه سمپل خودم درست کردم اون بالا گذاشتم
راهی که رفتم تقریبا شبیه همینی بود که شما گفتین. اگه لطف کنید دانلودش کنید و ببینید ممنون میشم. میخوام ببینم راه درستی رفتم؟
البته نتیجه درسته میخوام ببینم راهش درست هست یا نه؟
 
سلام به همه دوست من شما یه راهکار دیگه هم داری واون اینکه از این روش استفاده کنی
 

پیوست ها

  • Archive.rar
    14.7 کیلوبایت · بازدیدها: 31

niny-goloo

Member
سلام به همه دوست من شما یه راهکار دیگه هم داری واون اینکه از این روش استفاده کنی

هه! اره روش جالبی بود. ولی خوب من این مسئله رو یه جوری دیگه حل کردم. من یه دکمه مخفی گذاشتم. شما سمپل دوم منو دانلود کنید. میبینید. توی کاری که کردین من متوجه یه مسئله شدم. چرا باید وقتی که کلیک میکنه هدف یا همون Target یه چیزی بایشه و وقتی MouveOver میشه یه چیز دیگه؟
 
خوب دیگه این چیزی که تو فلش هست و شما میتونی از ترکیب اینا استفاده کنی اینکه چرا فلش اینطوری تصمیم میگره رو منم نمی دونم ولی امیدوارم کارت راه بیوفته
چون من خودم از این روش استفاده میکنم
 

niny-goloo

Member
اوهوم کارم راه افتاد. الان یه کم درک کردم که چرا باید اینجوری باشه :دی
البته که باید اینطوری میبود. و طوری که من فکر میکردم اشتباه بوده. نه چیزی که فلش انجام میده.
ولی خوب بازم تو قسمت دوم سوالم موندم که ایا این راهی که برای نحوه تشخیص check یا uncheck بودن رفتم درسته یا نه :دی
 

++Hadi++

Active Member
PHP:
myRadioButton.selected=true;
trace(mtyRadioButton.selected);
البته در مورد کامپوننتش
وگرنه می تونین یه کلاس بنویسید.
من به زودی یه سمپل انشاءالله می زارم
 

niny-goloo

Member
کاکو جان اینی که گذاشتی فایل flaش باز نمیشه تو کامپیوتر من
فلش من CS5 ه ها.
 

جدیدترین ارسال ها

بالا