بررسی movieclip ها در یک حلقه

ehsansh2

New Member
سلام.
آقا من یه مشکلی خوردم هر کاری میکنم درست نمیشه.
یه mc درست کردم که هر وقت روش کلیک میشه یک متغیر public داخلش هست که مقدار 1 میگیره.
حالا فرض کنید 10 نمونه از اون mc الان توی stage هست. روی 3 تاش کلیک کردیم. حالا میخوایم بدونیم کدومها کلیک شده.
این کار رو میخوام توی یک حلقه انجام بدم بجای اینکه بخوام یکی یکی خودم برم همه رو چک کنم.
کسی میتونه کمکی کنه؟
 

DaDaDooDoo

کاربر VIP
PHP:
import flash.events.Event;
import flash.display.MovieClip;

var ObjectCount:Number = container.numChildren;
var ClickedObjectsArray:Array = new Array();
Check_btn.addEventListener(MouseEvent.CLICK, getClickedObjects);


function getClickedObjects(e:Event):void
{
	for(var i:Number = 0; i<=ObjectCount-1; i++)
	{
		var mc:MovieClip = new MovieClip();
		mc = MovieClip(container.getChildAt(i));
		if(mc.Clicked == true)
		{
			var ObjName:String = mc.name;
			ClickedObjectsArray.push(ObjName);
		}
	}
	trace(ClickedObjectsArray);
}

کدهای داخل container :
PHP:
box1.addEventListener(MouseEvent.CLICK, doIncreament);
box2.addEventListener(MouseEvent.CLICK, doIncreament);
box3.addEventListener(MouseEvent.CLICK, doIncreament);
box4.addEventListener(MouseEvent.CLICK, doIncreament);
box5.addEventListener(MouseEvent.CLICK, doIncreament);

function doIncreament(e:Event):void
{
	e.target.digit++;
	e.target.Clicked = true;
}

بعد از کلیک روی آبجکت ها ، دکمه Get Clicked را بزنید ( در محیط فلش ).
اگر توضیح لازم بود بگید توضیح بدم .
 

پیوست ها

  • getChild.rar
    326.9 کیلوبایت · بازدیدها: 28

JavidFlasher

کاربر فعال
اینطور که من فهمیدم !
نه نیازه یکی یکی چک کنی نه هم تو حلقه:
PHP:
var array:Array=new Array()
Check_btn.addEventListener(flash.events.MouseEvent.CLICK,check_fun)
container.addEventListener(flash.events.MouseEvent.CLICK,onClick)
function check_fun (e:MouseEvent) {
	trace(array)
}
function onClick (e:MouseEvent) {
	
	array.push(e.target.name)
}
فایل پیوست رو ببین منظورت همینه!
 

پیوست ها

  • clicked_btn.zip
    403.8 کیلوبایت · بازدیدها: 12

DaDaDooDoo

کاربر VIP
سلام،

کوروش جان میشه بیشتر توضیح بدی؟

کل آبجکتهای هدف داخل یک مووی کلیپ به نام container هست . هر آبجکت یک پروپرنی داره از نوع بولین که به صورت پیش فرض فالس هست و اگه روی اون آبجکت کلیک بشه true می شه .

با استفاده از متد numChildren تعداد کل آبجکتهای درون container رو بدست میاریم .
یه حلقه for درست می کنیم که به تعداد تعداد آبجکتهای درون container تکرار می شه و در هر بار تکرار میاد و یه مووی کلیپ جدید می سازه و اون رو برابر آبجکت i ام از آبجکتهای درون container قرار می ده . (
PHP:
container.getChildAt(i)
)
بعد میاد پروپرتی clicked اون رو چک می کنه اگه true بود اسم اون رو درون یک آرایه میریزه .
اینطوری در آخر کار ما یه آرایه داریم از اسم آبجکتهایی که روشون کلیک شده .
اینطور که من فهمیدم !
نه نیازه یکی یکی چک کنی نه هم تو حلقه:
PHP Code:
var array:Array=new Array()
Check_btn.addEventListener(flash.events.MouseEvent.CLICK,check_fun)
container.addEventListener(flash.events.MouseEvent.CLICK,onClick)
function check_fun (e:MouseEvent) {
trace(array)
}
function onClick (e:MouseEvent) {

array.push(e.target.name)
}
فایل پیوست رو ببین منظورت همینه!

بله ، اما خودشون چون به حلقه اشاره کرده بودن من این روش به ذهنم رسید . اما روش شما ساده تره . اما روشی که من گفتم داینامیک تره .
 

triton

کاربر فعال
سلام
برای دسترسی به یک سری شی مثلا از نوع MovieClip بهتره از روشی که JavidFlasher فرمودند استفاده کنید ولی بهتره خود شی را در آرایه قرار بدید که کنترل بیشتر باشه. در واقع کارایی این روش را وقتی که زیاد بخواهید به اشیا مورد نظرتون دسترسی داشته باشید بهتر درک می کنید ولی باز هم مشکلی وجود داره و اون هم casting یا تبدیل های پی در پی هست که دلیل اون هم ذخیره شدن اشیا با استفاده از نوع Object در درون آرایه هست ولی با استفاده از Vector این مشکل هم رفع می شه و یک آرایه مثلا از نوع MovieClip دارید که می تونید به سادگی و با استفاده از یک حلقه for به هر چیزی که درون اون قرار داره دسترسی پیدا کنید.
 

++Hadi++

Active Member
PHP:
var myArray:Array=new Array();
for(var i:int=0;i<20;i++)
{
   var myMovie:MovieClip=new MC();
   myMovie.IDDD=i;
   addChild(myMovie);
   myMovie.addEventListener(MouseEvent.CLICK,fun);
   myMovie.x=xx;
    myMovie.y=YY;
   myArray.push(myMovie);
}
function fun(evt:MouseEvent):void
{
   trace(evt.currentTarget.IDDD);
}
مووی کلیپ چون به صورت پیش فرض از نوع کلاسهای داینامیک هست پس می شه هم متغیر یا متدی رو بدون تعریف پیش فرض بهش چسبوند و از جای دیگه بهش دست پیدا کرد .
بای...
 

ehsansh2

New Member
دوستان این مرام شما ما رو گرفت!
شنیده بودیم اینجا فاروم باحالیه اما خیلی بیشتر از اونیکه فکر میکردم باحالین :)

با تشکر از پاسخهاتون میخواستم اگه امکان داره پیشنهاد بدید که برای درست کردن این بازی ساده چی کار کنم.
میخوام اون بازی رو درست کنم که باید از داخل یک بورد شکل های شبیه به هم رو پیدا کنیم.
الان تا جاییکه درست کردم رو براتون ضمیمه کردم.
فقط میخوام یه کاری توش انجام بشه و اون اینه:
وقتی دومی کلیک شد اگر شبیه اولی بود جفتشون روی فریم 2 برن و بایستن در غیر اینصورت هر 2 برن روی فریم اول

اگه این لطف رو در حق ما بکنید بسیار سپاسگذار هستم.
 

پیوست ها

  • FindSimilars.rar
    8.3 کیلوبایت · بازدیدها: 9

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

بالا