الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكله في الحركه العشوائيه في الاكشن سكريبت

بدأه ali shalash في 29 مايو 2008 · 5 رد · 1,373 مشاهدة · في التصميم والفلاش والبرامج الرسومية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخواني الاعضاء اريد المساعده في تصميم بسيط لفيلم قمت فيه بلغه الاكشن سكريبت بكتابه كود يقوم بنسخ الفيلم الي 7 نسخ و الكود كالتالي :

var mcDup:MovieClip = null;

for(var i:Number = 0; i < 7; i++) {

mcDup = mcCircle.duplicateMovieClip('mcCircle' + i,this.getNextHighestDepth());

mcDup.play();

mcDup._x = Math.random() * 300;

mcDup._y = Math.random() * 300;

المهم الكود يعمل جيد لكن المشكله اني اريد ان اقوم باضافه وظيفه فانكشن تقوم بتحريك الافلام المنسوخه بطريقه عشوائيه في الساحه و حاولت باضافه كود و حاولت باكثر من طريقه لكن دون جدوي اتمني مساعدتكم و لو بطريقه اخري تقوم بنفس المهام

#2

هل لك أن تعرض محاولتك، كي نتمكن من تعديلها بدلا من كتابة كل شيء من الصفر.

عموما عليك فقط إعادة تعريف الوظيفة EnterFrame لكل نسخة، وبداخلها عليك بتحديد الموقع الجديد للفيلم.

طبعا في هذه الحالة لو استخدمت Random دئما ضمن ال EnterFrame ستجد أن الفيلم " ينط " أو يقفز من مكان لآخر، في كل كادر جديد.

أما إذا أردت للحركة أن تغير اتجاهها وسرعتها كل حين، فعليك تصميم العناصر التالية:

- ثابت زمني k من أجل تحديد لحظة تغير الاتجاه، ليس بالضرورة أن يكون k ثابت أساسا، بل عشوائي ضمن مجال محدد.

- شعاع اتجاه d، يغير هذا الشعاع من جهته كل لحظة (n*k) وبإمكانك استبدال الشعاع بزاوية ولكن عليك حساب الاتجاه مرة أخرى اعتمادا على الزاوية.

- متغير للسرعة s، وذلك في حال رغبت بتغيير سرعة التحرك، يتغير أيضا في اللحظة (n*k) أو بأي لحظة أخرى، وتكون محصلة الحركة هي d*s

#3
عربي عربي كتب:
هل لك أن تعرض محاولتك، كي نتمكن من تعديلها بدلا من كتابة كل شيء من الصفر.

عموما عليك فقط إعادة تعريف الوظيفة EnterFrame لكل نسخة، وبداخلها عليك بتحديد الموقع الجديد للفيلم.

طبعا في هذه الحالة لو استخدمت Random دئما ضمن ال EnterFrame ستجد أن الفيلم " ينط " أو يقفز من مكان لآخر، في كل كادر جديد.

أما إذا أردت للحركة أن تغير اتجاهها وسرعتها كل حين، فعليك تصميم العناصر التالية:

- ثابت زمني k من أجل تحديد لحظة تغير الاتجاه، ليس بالضرورة أن يكون k ثابت أساسا، بل عشوائي ضمن مجال محدد.

- شعاع اتجاه d، يغير هذا الشعاع من جهته كل لحظة (n*k) وبإمكانك استبدال الشعاع بزاوية ولكن عليك حساب الاتجاه مرة أخرى اعتمادا على الزاوية.

- متغير للسرعة s، وذلك في حال رغبت بتغيير سرعة التحرك، يتغير أيضا في اللحظة (n*k) أو بأي لحظة أخرى، وتكون محصلة الحركة هي d*s

السلام عليكم

شكرا اخي العزيز علي تعقيبك بالنسبه لموضوع المحاوله فانا كل مافعلته هو اضافه كود سيت انترفال بسيط ووضعت فيه اسم المتغير للفيلم المنسوخ

(set interval)

بالنسبه لموضوع enter frame فانا اردت ان يتم تحريك مجموعه الافلام بطريقه عشوائيه و ليس 7 نسخ فقط بل اكثر من 100 نسخه من الفيلم

و شكرا لكم

#4

وعليكم السلام ورحمة الله وبركاته

اخوي علي اوصفلي شنو أللي تبي تسويه وشنو مشكلتك بالضبط ؟ ( ابي معلومات بالتفصيل علشان اقدر اساعدك وياليت تضيف ملف fla )

#5
SB4 كتب:
وعليكم السلام ورحمة الله وبركاته

اخوي علي اوصفلي شنو أللي تبي تسويه وشنو مشكلتك بالضبط ؟ ( ابي معلومات بالتفصيل علشان اقدر اساعدك وياليت تضيف ملف fla )

بص يا سيدي عايز كود بسيط و سهل يقوم بتحريك كائن دخل الفلاش بطريقه عشوائيه و متتاليه بدون توقف

شكرا

#6

هذا هو الكود بالاكشن سكريبت 3 يعني لازم يكون عندك Flash CS3

var aMovieClips:Array = new Array(mcBlack, mcRed, mcGreen);
var moveTimer:Timer = new Timer(230);

function mcMovement(evt:TimerEvent):void {
	for (var i:Number = 0; i<aMovieClips.length; i++) {
		aMovieClips.x = Math.random() * stage.stageWidth;
		aMovieClips.y = Math.random() * stage.stageHeight;
	}
}
moveTimer.addEventListener(TimerEvent.TIMER, mcMovement);
moveTimer.start();

لاحظ تضيف اسم الموفي كليب بالمصفوفة aMovieClips وتقدر تغير سرعه الحركة تغيير الرقم في الأمر new Timer(230) إلى الرقم المناسب

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…