کمک فوری در اکشن اسکریپت

prince_0f_darks

New Member
دوستان عزیز خیلی ببخشید من عجله دارم باید زودتر این پروژه رو تحویل دانشگاه بدم
راستش بازی فلشی رو درست کردم البته از روی اموزشهای lynda و در این بازی از کلاسها استفاده شده بنده هم زیاد اشنا نیستم!

ببینید بازی رو کامل ساختم ولی تنها مشکلی که هست اینه که بازی فقط در صورتی عمل میکنه که در فریم اول قرار داده شده باشه !!!
ولی اگر در فریم دیگری بازی رو قرار بدم این ارور رو به من میده

کد:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at Map()
TypeError: Error #2007: Parameter hitTestObject must be non-null.
    at flash.display::DisplayObject/_hitTest()
    at flash.display::DisplayObject/hitTestObject()
    at DragDrop/drop()

هر چی هست گیر داده به این hitTestObject

این هم کدهای درگ و دراپ هستش
خودم فکر میکنم باید در قسمت متغیر target که از نوع Displayobject تعریف شده چیز دیگه ای داده باشه ! باز استاید اگر راهنمایی کنید واقعن ممنون میشم

کد:
package 
{
	import flash.display.*;
	import flash.events.*;


	public class DragDrop extends Sprite
	{
		var origX:Number;
		var origY:Number;
		var target:DisplayObject  ;


		public function DragDrop()
		{
			// constructor code
			origX = x;
			origY = y;
			addEventListener(MouseEvent.MOUSE_DOWN, drag);
			buttonMode = true;
		}
		
		function drag(evt:MouseEvent):void
		{
			stage.addEventListener(MouseEvent.MOUSE_UP, drop);
			startDrag();
			parent.addChild(this);
		}
		
		function drop(evt:MouseEvent):void
		{
			stage.removeEventListener(MouseEvent.MOUSE_UP, drop);
			stopDrag();
			
			if(hitTestObject(target))
			{
				visible = false;
				target.alpha = 1;
				Object(root).match();
			}
			
			x = origX;
			y = origY;
		}


	}


}
 
آخرین ویرایش:

prince_0f_darks

New Member
راستی داشت یادم میرفت بازی پازل هستش و وقتی یک قطعه از پازل رو با موس جا به جا میکنم اون ارور داده میشه
از طریق اکشن اگه بخوام این بازی رو تموم کنم خیلی طول میکشه و باید کلی کد رو مدام بنویسم و کپی کنم و x , y ها رو در بیارم و کلی دردسر داره ولی از این روش کلاسها خیلی ساده اانجام میشه
 

prince_0f_darks

New Member
:cry: دوستان امیدم به همین سایت هستش نا امیدم نکنید یعنی واقعن کسی این مشکل رو نمیدونه ؟ :-?
تو سایتهای خارجی هم دیدم که این مشکل رو پرسیدن ولی اونجا هم کسی جواب درستی نداده و فقط گفتن که target رو باید درست تعریف کنیم و من هم این رو خودم میدونم که مشکلش همین target هست که چون ابجکتهای بازی پازلم تو فریم اول نیستن نمیتونه پیداشون کنه و برای همین اون ارور رو میده ولی چون کد نویسیش رو بلد نیستم نمیدونم باید مثلن بجای DisplayObject چی بزنم !!!!
یا مثلن تو قسمت Object(root).match(); چی میتونم بجای root استفاده کنم !!! از parent هم که استفاده کردم همون مشکل رو داره دیگه دارم دیوونه میشم همه چیز بازی اماده شده فقط لنگ همین یه کد موندم کممممممممممممممممممممممممممممممممممممک
 

prince_0f_darks

New Member
دوستان تو یه سایت خارجی یکی این جواب رو داده ولی متاسفانه من متوجه منظورش نمیشم !
It's because your hitTestObject method isn't correctly invoked. This method must be invoked in a Display Object instance to test if another instance of a Display Object hits it:


کد:
[/FONT][/COLOR][COLOR=#00008B]if[/COLOR] (myDisplayObject.hitTestObject(anotherDisplayObject))
{
    [COLOR=#808080]// do stuff[/COLOR]
}[COLOR=#000000][FONT=Arial]
 

prince_0f_darks

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

mmz2006

Active Member
اگه براتون امکان داره یه نمونه از پروژه تون رو قرار بدین.
 

prince_0f_darks

New Member
دو تا لینک براتون میزارم اولی لینک بازی هست که ارور رو میده و خود بازی پازل رو در فریم پنجم ساختم که اینجوری شده
https://www.mediafire.com/?dvmj3fw0mh320jc
و دومین لینک هم برای بازی هست که به تنهایی در فقط یک فریم اول ساختم و به خوبی کار میکنه و مشکلی نداره
https://www.mediafire.com/?36bcmsccxtduu7n
من این بازی پازل رو طبق اموزشهای lynda ساختم ولی متاسفانه اونجاا توضیح نداده که برای این که بازی در فریم های دیگه تایم لاین هم کار کنه باید چیکار کرد !!!
 

mmz2006

Active Member
با سلام دوباره

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

در فایل ضمیمه من نمونه شما رو اینطور اصلاح کردم که فایل کلاسی راه انداز رو غیر فعال کردم یعنی در قسمت پروپرتیس قسمت کلاس نام مپ را حذف کردم . بعد در فریم پازل ها در پنجره اکشنش کدهای همون فایل مپ رو آوردم و اصلاحش کردم در بالاش درک دروپ رو ایمپورت کردم .پابلیک رو از ابتدای فانکشن ها حذف کردم.

موفق باشید.
 

پیوست ها

  • testflash1_ok.rar
    1.3 مگایابت · بازدیدها: 6
آخرین ویرایش:

prince_0f_darks

New Member
با سلام دوباره

ایراد از این بود که وقتی فایل راه انداز شما که همون مپ باشه اجرا میشه هنوز مهره های پازل وجود ندارن که بتونه اونا رو مقدار دهی کنه .بخاطر همین باید مقدار دهی خودتون رو در همون فریم مورد نظر انجام بدین .

در فایل ضمیمه من نمونه شما رو اینطور اصلاح کردم که فایل راه انداز رو غیر فعال کردم یعنی در قسمت پروپرتیس قسمت کلاس نام مپ را حذف کردم . بعد در فریم پازل ها در پنجره اکشنش کدهای همون فایل مپ رو آوردم و اصلاحش کردم در بالاش درک دروپ رو ایمپورت کردم .پابلیش رو از ابتدای فانکشن ها حذف کردم.

موفق باشید.

دوست عزیز اول یه تشکر حسابی بابت زحمتی که کشیدی و واقعن خیلی حال کردم ممنون ازت
ببخشید پستم و ویرایش کردم مشکلی که پیش اومد درست شد یه لحطه سوتی دادم :rose:


عزیز فقط یه سئوال دیگه دارم اگه بخوام پازل های دیگه هم به این بازی اضافه کنم یعنی عکسهای دیگگه ای رو هم اضافه کنم ایا باید کد های جدا براشون بنویسم ؟ یا فقط ابجکتهاشون رو اضافه کنم اگه راهنمایی کنید یک دنیا ممنون میشم
 
آخرین ویرایش:

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

بالا