مشاهدة النسخة كاملة : مختبر شباب سفن الثاني


الشهاب الحارق
24 Feb 2002, 09:56 PM
مختبر شباب سفن الثاني

حمل الامثلة (http://mypage.ayna.com/highspy/ActionScript/jukbox/colors.zip)

حمل المشروع الاخير (http://mypage.ayna.com/highspy/ActionScript/jukbox/colorandjukbox.zip)

الألوان عالم بلا حدود

بسم الله الرحمن الرحيم

ننصح بالإطلاع على الدرس المترجم الأسبوعي 3 قبل قراءة هذا الدرس

تكلمنا عن العنصر getRGB() في المترجم الأسبوعي 3 وقد أشرنا

إلى انه هنالك عنصر افضل من هذا ألا وهو setTransform()

القوانين السائدة على هذا العنصر

1- التعريف الأساسي للعنصر ووضعه في متغير كما هو حال كل object
2- نفس الخطوات المتبعة بالنسبة لعلامتي التنصيص المذكورة في المترجم الأسبوعي 3
3- هذا النوع من العناصر يقبل العناصر بشكل مباشر عكس العنصر setRGB
الذي لا يقبل إلا باستخدام معاملات مخاطبة الآلة بشكل مباشر bit Wise Operator


سنقوم في مختبرنا هذا بالتعامل مع هذا العنصر من السهل إلى ما هو يحتاج إلى قليل فقط من التركيز

لا عليكم يقال أن ما نره بالأمس صعب صار ذات اليوم يسيري

ويقول الشاعر

وما نيل المطالبِ بالتمني ولكن تُأخذ الدنيا غلابا
وما استعصى على قومِ منالٌ إذا الإقدام كان لهم ركابا


التركيبة النصية لهذا العنصر

mycolor = new Color("s");

transform= {rb:190,gb:210,bb:5};

mycolor.setTransform(transform);

فحالة كحال ابن عميه setRGB من حيث البناء ولا يختلفان إلا في العناصر

التي ضمها العنصر transform انتبه هو ليس متغير وإنما عنصر object

حيث ترى العناصر التي به وما يدل عليها إلا النقاط التي تدل على أنها عناصر

لا تكترث الآن بخصوص العناصر في العنصر هذا حيث الكلام عنها سابق لأوانه

ولم يحن بعد ذكره وإلى أن يحين ذلك سيكون لنا تعقيب على ذلك .




التطبيق الأول تحويل الفلم إلى اللون الأخضر

ستكون بهذا الشكل
mycolor = new Color("s");

transform= {rb:00,gb:255,bb:00};

mycolor.setTransform(transform);

الشرح mycolor هو المتغير الذي سيضم التعريف الأساسي

تذكر بارك الله فيك أن العناصر لابد بل هو شرط أساسي أن نقوم بتعريفها في متغير

ثم مخاطبتها عن طريق ذلك المتغير لذلك سميت اللغة التي تحوي العناصر ب

OOP وهي اختصار لــ Objects Oriented Programming

وهذا التعريف الأساسي ستراه في مجمل العناصر ولكن أحياناً بشكل مختلف

يتم تعريف عنصر عن أخر فمثلاً من العناصر هي string identifier

وتعني أن مثلاً الفلم أو الصوت لابد أن يكون بين علامتي التنصيص

والكثير ليس الآن مجال ذكره المهم بعد أن قمنا بوضع تعريف العنصر في متغير

الآن نقوم بصناعة عنصر يحوي عناصر بداخلة سيعتمد عليها متغيرنا هذا اعتمادً كلياً

وهو transform= {rb:255,gb:255,bb:00};

حيث transform اسم العنصر و rb يمثل قيمة اللون الأحمر أما gb فيمثل اللون الأخضر

وأخيراً اللون الأحمر الذي يمثله العنصر bb



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

الأزرق الخالص أي الواضح الناصع الخفيف غير القاتم .


التطبيق الثاني

width = 450 height = 350

التركيبة النصية لهذا التطبيق


onClipEvent(load) {

myc = new Color(this);

tras = {rb:255,gb:0,bb:0};

n = 0;

}


onClipEvent(enterFrame) {

myc.setTransform(tras);

if(n==0) {

tras.rb-=5;
tras.gb+=5;
tras.bb+=5;


}

if(tras.rb==0) {

n=1;
}

if(n==1) {

tras.rb+=5;
tras.gb-=5;
tras.bb-=5;

}

if(tras.rb==255){

n=0;

}


}
الشرح :

عند وقع الحدث التحميل

نفس المذكور في الأعلى من تعريف المتغير والعنصر وزدنا على ذلك متغير اسمه n ويحوي القيمة صفر

عند وقع الحدث داخل الإطارات أي إطارات الفلم

استخدمنا أداة الشرط if إذا كان المتغير n يساوي صفر

سترى أن العنصر rb ينقص أما العنصر الثاني والثالث في تزايد

وذلك انهما في التعريف الأولى لهما كان الأول ذو قيمة تامة أي 255 أعلى منهما

من ناحية التعريف أما الثاني والثالث فكانا في قيمة صفرية ولذلك قاما هما بالتزايد ام الأول فالعكس فقد قام بالتناقص


ثم الشرط الثاني هو إذا كان العنصر الأول يساوي القيمة صفر

حيث كان في التعريف الأولي يساوي 255 ثم قلنا لو أن المتغير n يساوي صفر

سيكون العنصر في تناقص فلابد انه سيكون بعد فتره يساوي القيمة صفر لذلك اعتمدنا عليه

في شرطنا هذا فإذا ما ساوى القيمة صفر سيكون العكس بالنسبة للشرط الأول أي

القيم التي كانت تتزايد ستتناقص والعكس بالعكس

و أما الشرط الأخير ما هو إلا للرجوع إلى نفس القصة من الأول حيث إذا ساوى صفر

سيقوم بتناقص قيم العناصر من جديد وتزايد قيمة العنصر rb

وهكذا سيكون في حلقة لا تنتهي اعتماداً على الشرط المسند لها


التمرين الثالث هو عكس القيم بالنسبة للخلفية والنصوص وهما عبارة عن فلمين يتعاكسان

width = 550 height = 400


ويختلفان اختلافاً كلي بالنسبة للقيم المتناثر في كل عنصر من عناصرهما .

وهذه هي التركيبة بالنسبة للنصوص ستلاحظ العناصر الثلاث الاخرى بالاسم ra , ga ba

وهم القيمة النسبية المئوية للألوان فكل لون له نسبه مئوية


onClipEvent(load) {

myc = new Color(this);


tras = {rb:0,gb:255,bb:255,ra:100,ga:0,ba:0};

n = 1;

الفرق أن هنا قيمة المتغير تساوي 1 ولا يهم حقيقتا لأننا نحن من يقرر ذلك

}


onClipEvent(mouseMove) {

myc.setTransform(tras);

هذا الشرط سيرى هل المتغير n الموجود في الفلم الأخر يساوي واحد أو لا
فمتى ساوى ذلك ستتغير قيم العناصر كلها على هذا النحو منها في تزايد و أخرى في تناقص

وذلك أن لما يساوي المتغير n في الخلفية بالقيمة واحد سيكون للعناصر نفس ما يحدث

هاهنا ولكن العكس صحيح المتزايدة من العناصر ستتناقص والمتناقصة ستتزايد
if(_root.col.n==1) {

tras.rb++;
tras.gb--;
tras.bb--;
tras.ra--;
tras.ga++;
tras.ba++;


}

if(tras.rb==0) {

n=0;
}

if(_root.col.n==0) {

tras.rb--;
tras.gb++;
tras.bb++;
tras.ra++;
tras.ga--;
tras.ba--;

}

if(tras.rb==255){

n=1;

}


}

والحال كحال سابقتها ولكن الآن بشكل مبسط ومفصل في تغير الألوان



مشروع المبرمج Grew

width = 550 height = 400

وهو بسيط ولكن جميل جداً

onClipEvent(load) {
// create the color object and transform
spiralColor = new Color(this);
colorTransform = {rb:255, bb:255, gb:255};

// start in mode 1
n = 1;
}

onClipEvent(enterFrame) {
// depending on which mode we are in, alter the transformation
if (n == 1) {
colorTransform.rb -= 5;
if (colorTransform.rb == 0) n = 2;
} else if (n == 2) {
colorTransform.bb -= 5;
if (colorTransform.bb == 0) n = 3;
} else if (n == 3) {
colorTransform.rb += 5;
if (colorTransform.rb == 255) n = 4;
} else if (n == 4) {
colorTransform.gb -= 5;
if (colorTransform.gb == 0) n = 5;
} else if (n == 5) {
colorTransform.bb += 5;
if (colorTransform.bb == 255) n = 6;
} else if (n == 6) {
colorTransform.gb += 5;
if (colorTransform.gb == 255) n = 1;
}

// set the new color
spiralColor.setTransform(colorTransform);

// rotate the spiral too
this._rotation = this._rotation += 5;
}

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


المشروع الأخير في الألوان وهو نفس الشيء ولكن نوعً ما مكثف

width = 460 height = 355

وعبارة عن وظيفة فيها المتغيرات بشكل عشوائي وتنادى عن طريق الوظيفة #include

للمزيد عن هذه الوظيفة راجع درس المترجم الأسبوعي 1 بالنسبة للوظيفة #include

وللوظائف راجع الدرس Action Script Fundamental part 7 and 8


myc = new Color(this);

function rano () {

r = int(Math.random()*255);
g = int(Math.random()*255);
b = int(Math.random()*255);
rra = int(Math.random()*100);
rrg = int(Math.random()*100);
rrb = int(Math.random()*100);

}

rano();
tras = {rb:r,gb:g,bb:b,ra:rra,ga:rrg,ba:rrb};


n = 1;


ام في عند وقع الحدث في داخل الإطار


myc.setTransform(tras);


if(n==1) {

rano();

tras.rb++;
tras.gb++;
tras.bb++;
tras.ra++;
tras.ga++;
tras.ba++;

}

if(tras.rb==255 or tras.gb==255 or tras.bb==255) {

n=0;
}

if(n==0) {

rano();
tras.rb--;
tras.gb--;
tras.bb--;
tras.ra--;
tras.ga--;
tras.ba--;

}

if(tras.rb==0 or tras.gb==0 ){

n=1;

}

ترى أنني أنادى الوظيفة عند كل شرط وذلك حتى تعطيني أرقام عشوائية

بالنسبة للعناصر فتكون ذات الألوان مختلف في كل حلقه تلفها معتمدة على

الشروط التي أسندت لها

هذا ولله أعلى وأعلم

السلام عليكم

كلاشن كوف
24 Feb 2002, 10:22 PM
تسلم اخوي الشهاب الحارق وكل عام وانتم بالف خير