مشکل این کد ساده چیه؟ (ساخت یک addChild اضافی در فریم های دیگه)

leontry89

Member
دوستان با این کد یک MovieClip وقتی درگ بشه رو یک MovieClip دیگه goto میشه به یک فریم
حالا مشکل اینجاستوقتی درگ بشه و داخل MovieClip هدف نره وقتی به یک فریم دیگه برم یه دونه از اون و اونجا میبینم!
(این مشکل فقط وقتی پیش میاد که درگ و دراپ روی موی کلیپ هدف قرار نگیره)
کد:
var selfXA:Number;var selfYA:Number;
ordibehesht_mc.addEventListener(MouseEvent.MOUSE_DOWN, DragA);
ordibehesht_mc.addEventListener(MouseEvent.MOUSE_UP, DropA);
function DragA(e:MouseEvent):void
{
	ordibehesht_mc.startDrag();
	selfXA = ordibehesht_mc.x;
	selfYA = ordibehesht_mc.y;
	addChild(ordibehesht_mc);
}
function DropA(e:MouseEvent):void
{
	ordibehesht_mc.stopDrag();
	if (ordibehesht_mc.hitTestObject(b_mc))
	{
		event2();
		ordibehesht_mc.removeEventListener(MouseEvent.MOUSE_DOWN, DragA);
		ordibehesht_mc.removeEventListener(MouseEvent.MOUSE_UP, DropA);
	}
	else
	{
		ordibehesht_mc.x = selfXA;
		ordibehesht_mc.y = selfYA;
	}
}
function event2():void
{
	ordibehesht_mc.visible=false;
	gotoAndStop("ordibehesht");
}
 

leontry89

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

BehrouzPc

پــــادشــاه فــلــــش
برای برگشت به جای قبلی اش می بایست مختصات محل ابتدایی را در متغیری ذخیره کنید و وقتی که hit انجام نشده بود مختصات اولیه را بدهید

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


PHP:
function onMouseOver(e:MouseEvent) {
    e.target.parent.addChild(e.target);
}

یا

function bringToFront(event:MouseEvent):void
{
    this.addChild(event.currentTarget as DisplayObject);
}

یا

function onMouseOver(e:MouseEvent) {
e.target.parent.setChildIndex(e.target, e.target.parent.numChildren-1);
}

موفق و پیروز باشید
 
آخرین ویرایش:

leontry89

Member
سلام آقا بهروز
با نمونه کدهای شما مشکل اومدن به بالاترین مووی کلیپ حل میشه اما بازم مشکل سوال اولم ایجاد میشه نمایش addchild در فریم های دیگه با توجه به کدهای گفته شده
 

BehrouzPc

پــــادشــاه فــلــــش
نمونه خود را جهت برسی ارسال نمایید
موفق و پیروز باشید
 

leontry89

Member
آقا هادی تو یک فریم چندتا مووی لیپ دارم که قابلیت درگ شدن دارن و وقتی رفتن رو مووی کلیپ هدف میرن به یک فریمی
حالا فقط مشکل اینجاست که اونی که درگ میشه بیاد بالا تر از بقیه مووی کلیپ ها
اون کدهایی که شما دادید باعث میشه وقتی یک مووی کلیپ درگ شد اما رو هدف نرفت تو بقیه فریم ها نمایش داده بشه

کد:
var selfX:Number;
var selfY:Number;
farvardin_mc.addEventListener(MouseEvent.MOUSE_DOWN, Drag);
farvardin_mc.addEventListener(MouseEvent.MOUSE_UP, Drop);
function Drag(e:MouseEvent):void
{
	//addChild(farvardin_mc);
	//parent.addChild(farvardin_mc);
	//setChildIndex(farvardin_mc,numChildren-1);
	farvardin_mc.startDrag();
	
	selfX = farvardin_mc.x;
	selfY = farvardin_mc.y;
}
function Drop(e:MouseEvent):void
{
	farvardin_mc.stopDrag();
	if (farvardin_mc.hitTestObject(b_mc))
	{
		event1();
		farvardin_mc.removeEventListener(MouseEvent.MOUSE_DOWN, Drag);
		farvardin_mc.removeEventListener(MouseEvent.MOUSE_UP, Drop);
	}
	else
	{


		farvardin_mc.x = selfX;
		farvardin_mc.y = selfY;
	}
}
function event1():void
{
	//removeChild(farvardin_mc);
	gotoAndStop("farvardin");
}
 

leontry89

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

پیوست ها

  • test.rar
    13.5 کیلوبایت · بازدیدها: 4

flash.developer

Active Member
شما چند تا کار می‌تونید انچام بدید
۱- دایره را در لایه بالاتر قرار بدید
۲- بوسیله‌ی کلیدهای ترکیبی کترل و مکان‌نمای بالا، دایره رو در سطح بالاتر از مستطیل قرار بدید
 

leontry89

Member
با اینکه addChild و گفتید حذف کنم و کردم اما این کد و میذارم برمیگردم به فریم مورد نظر بازم اضافی تولید میکنه و تو فریم یک هم نشونش میده
 

flash.developer

Active Member
وقتی شما ایندکس یک سمبول رو تغییر بدی این اتفاق رخ میده
بهتره از همون روش اول استفاده بکنی
 

BehrouzPc

پــــادشــاه فــلــــش
PHP:
btnBack.addEventListener(MouseEvent.CLICK,test)
function test(e:Event)
{
    gotoAndStop(1);
    removeChild(circle)
}
 

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

بالا