أكشن سكريبت
| نموذج | متعدد النماذج : كائني التوجه ( يعتمد على النموذج الأولي )، وظيفي ، إلزامي ، برمجة نصية |
|---|---|
| عائلة | إيكماسكربت |
| صمم بواسطة | غاري جروسمان |
| المطور | Macromedia (تم دمجه الآن في Adobe Systems ) |
| ظهرت لأول مرة | 1998 |
| إصدار مستقر | 3.0 / 27 يونيو 2006 |
| الانضباط في الطباعة | قوي ، ثابت |
| نِطَاق | معجمي |
| موقع إلكتروني | www.adobe.com/devnet/actionscript |
| التنفيذات الرئيسية | |
| Adobe Flash Player ، Adobe AIR ، Apache Flex ، Scaleform GFx | |
| متأثر بـ | |
| هايبر توك ، جافا سكريبت ، جافا | |
| متأثر | |
| هاكس ، تايب سكريبت [1] | |
| امتداد اسم الملف |
.مثل |
|---|---|
| نوع الوسائط على الإنترنت |
تطبيق/ecmascript [2] |
ActionScript هي لغة برمجة موجهة للكائنات طورتها في الأصل شركة Macromedia Inc. (استحوذت عليها Adobe لاحقًا ). وهي متأثرة بلغة HyperTalk ، لغة البرمجة النصية لـ HyperCard . [3] وهي الآن عبارة عن تنفيذ لـ ECMAScript (بمعنى أنها مجموعة فرعية من بناء الجملة والدلالات للغة المعروفة على نطاق واسع باسم JavaScript )، على الرغم من أنها نشأت في الأصل كأخت، حيث تأثرت كلتاهما بـ HyperTalk . عادةً ما يتم تحويل كود ActionScript إلى تنسيق البايت كود بواسطة المترجم .
يتم استخدام ActionScript في المقام الأول لتطوير مواقع الويب والبرامج التي تستهدف منصة Adobe Flash ، حيث تم استخدامه في الأصل على صفحات الويب في شكل ملفات SWF مضمنة .
تُستخدم ActionScript 3 أيضًا مع نظام Adobe AIR لتطوير تطبيقات سطح المكتب والجوال. اللغة نفسها مفتوحة المصدر حيث يتم تقديم مواصفاتها مجانًا [4] ويتوفر كل من المترجم مفتوح المصدر (كجزء من Apache Flex ) والآلة الافتراضية مفتوحة المصدر ( Tamarin ).
تم استخدام ActionScript أيضًا مع Scaleform GFx لتطوير واجهات مستخدم ألعاب الفيديو ثلاثية الأبعاد وشاشات العرض .
ملخص
تم تصميم ActionScript في البداية للتحكم في الرسوم المتحركة المتجهة ثنائية الأبعاد البسيطة المصنوعة في Adobe Flash (المعروف سابقًا باسم Macromedia Flash). في البداية، ركزت الإصدارات المبكرة من محتوى Flash على الرسوم المتحركة، حيث قدمت ميزات تفاعلية قليلة، وبالتالي كانت قدرتها على البرمجة النصية محدودة للغاية. أضافت الإصدارات اللاحقة وظائف تسمح بإنشاء ألعاب تعتمد على الويب وتطبيقات ويب غنية بالوسائط المتدفقة (مثل الفيديو والصوت). اليوم، يعد ActionScript مناسبًا لتطوير سطح المكتب والجوال من خلال Adobe AIR؛ يتم استخدامه في بعض تطبيقات قواعد البيانات وفي الروبوتات الأساسية كما هو الحال في Make Controller Kit .
قدم Flash MX 2004 لغة ActionScript 2.0، وهي لغة برمجة نصية أكثر ملاءمة لتطوير تطبيقات Flash. غالبًا ما يكون من الممكن توفير الوقت عن طريق برمجة شيء ما بدلاً من تحريكه، وهو ما يتيح أيضًا مستوى أعلى من المرونة عند التحرير.
منذ وصول إصدار Flash Player 9 alpha (في عام 2006)، تم إصدار إصدار أحدث من ActionScript، ActionScript 3.0. تم تصميم هذا الإصدار من اللغة ليتم تجميعه وتشغيله على إصدار من آلة Tamarin الافتراضية، والتي كانت تُعرف سابقًا باسم ActionScript Virtual Machine 2، والتي تمت إعادة كتابتها بالكامل أيضًا (تُسمى AVM2). [5] وبسبب هذا، فإن الكود المكتوب في ActionScript 3.0 يستهدف بشكل عام Flash Player 9 والإصدارات الأحدث، ولن يعمل في الإصدارات السابقة. في الوقت نفسه، يتم تنفيذ ActionScript 3.0 بسرعة تصل إلى 10 مرات أسرع من كود ActionScript القديم بسبب تحسينات المترجم الفوري . [6]
يمكن استخدام مكتبات Flash مع قدرات XML للمتصفح لعرض محتوى غني في المتصفح. تُعرف هذه التقنية باسم Asynchronous Flash وXML، تمامًا مثل AJAX. تقدم Adobe خط منتجات Flex لتلبية الطلب على تطبيقات الويب الغنية المبنية على وقت تشغيل Flash، مع السلوكيات والبرمجة التي تتم في ActionScript. يشكل ActionScript 3.0 الأساس لواجهة برمجة التطبيقات Flex 2 ( API ).
تاريخ
بدأت ActionScript كلغة برمجة موجهة للكائنات لأداة تأليف Flash من Macromedia ، والتي طورتها لاحقًا Adobe Systems باسم Adobe Flash. قدمت الإصدارات الثلاثة الأولى من أداة تأليف Flash ميزات تفاعلية محدودة. كان بإمكان مطوري Flash الأوائل إرفاق أمر بسيط، يسمى "action"، بزر أو إطار. كانت مجموعة الإجراءات عبارة عن عناصر تحكم تنقل أساسية، بأوامر مثل "play" و"stop" و"getURL" و"gotoAndPlay".
مع إصدار Flash 4 في عام 1999، أصبحت هذه المجموعة البسيطة من الإجراءات لغة برمجة نصية صغيرة. تضمنت الإمكانيات الجديدة المقدمة لـ Flash 4 المتغيرات والتعبيرات والمشغلات وعبارات if والحلقات . وعلى الرغم من الإشارة إليها داخليًا باسم "ActionScript" ، إلا أن دليل مستخدم Flash 4 ومستندات التسويق استمرت في استخدام مصطلح "actions" لوصف هذه المجموعة من الأوامر.
الجدول الزمني حسب إصدار اللاعب
- Flash Player 2 : الإصدار الأول الذي يدعم البرمجة النصية، وكانت إجراءاته تشمل gotoAndPlay، وgotoAndStop، وnextFrame، وnextScene للتحكم في الجدول الزمني.
- Flash Player 3 : دعم موسع للنصوص الأساسية، ولديه القدرة على تحميل ملفات SWF الخارجية (loadMovie).
- Flash Player 4 : أول مشغل يحتوي على تنفيذ برمجي كامل (يُسمى Actions )، وكان البرمجة النصية عبارة عن بناء جملة يعتمد على Flash واحتوى على دعم للحلقات والشرطيات والمتغيرات وغيرها من تراكيب اللغة الأساسية.
- Flash Player 5 : تم تضمينه في الإصدار الأول من ActionScript، واستخدم البرمجة القائمة على النموذج الأولي المستندة إلى ECMAScript، [7] وسمح بالبرمجة الإجرائية الكاملة والبرمجة الموجهة للكائنات. التطوير القائم على التصميم.
- أضاف Flash Player 6 نموذجًا للتعامل مع الأحداث، وعناصر تحكم في إمكانية الوصول، ودعمًا للتبديل . سمح الإصدار الأول الذي يدعم تنسيق رسالة العمل (AMF) وبروتوكول المراسلة في الوقت الفعلي (RTMP) ببث الصوت/الفيديو عند الطلب.
- Flash Player 7 : تتضمن الإضافات إليه تنسيق Cascading Style Sheets ( CSS ) للنصوص ودعم ActionScript 2.0، وهي لغة برمجة تعتمد على اقتراح ECMAScript 4 Netscape [8] مع وراثة قائمة على الفئة . ومع ذلك، يمكن لـ ActionScript 2.0 التجميع المتبادل إلى بايت كود ActionScript 1.0 ، بحيث يمكن تشغيله في Flash Player 6.
- قام Flash Player 8 بتوسيع ActionScript 1/ActionScript 2 عن طريق إضافة مكتبات فئات جديدة مع واجهات برمجة التطبيقات للتحكم في بيانات الخريطة النقطية في وقت التشغيل، وتحميل الملفات، والمرشحات المباشرة للضبابية والظل المنسدل .
- أضاف Flash Player 9 (الذي كان يسمى في البداية 8.5) ActionScript 3.0 مع ظهور آلة افتراضية جديدة تسمى ActionScript Virtual Machine 2 (AVM2)، والتي تتعايش مع AVM1 السابقة اللازمة لدعم المحتوى القديم. كانت زيادة الأداء هدفًا رئيسيًا لهذا الإصدار من المشغل، بما في ذلك المترجم الجديد في الوقت المناسب (JIT). تمت إضافة دعم المقابس الثنائية، وتحليل XML ECMAScript for XML (E4X)، ووضع ملء الشاشة، والتعبيرات العادية. هذا هو أول إصدار من المشغل يحمل عنوان Adobe Flash Player. [9]
- Flash Player 10 (المسمى في البداية Astro) : تمت إضافة معالجة ثلاثية الأبعاد أساسية ، مثل الدوران على المحور X وY وZ، وواجهة برمجة تطبيقات الرسم ثلاثي الأبعاد، وتعيين الملمس . القدرة على إنشاء مرشحات مخصصة باستخدام Adobe Pixel Bender . يتم الآن تفريغ العديد من مهام المعالجة المرئية إلى وحدة معالجة الرسومات مما يؤدي إلى انخفاض ملحوظ في وقت العرض لكل إطار، مما يؤدي إلى معدلات إطارات أعلى ، خاصة مع فيديو H.264 . توجد واجهة برمجة تطبيقات صوتية جديدة تسمح بإنشاء صوت مخصص في الفلاش، وهو أمر لم يكن ممكنًا من قبل. [10] علاوة على ذلك، يدعم Flash Player 10 الاتصال من نظير إلى نظير ( P2P ) باستخدام بروتوكول تدفق الوسائط في الوقت الفعلي (RTMFP).
- Flash Player 11 : الإضافة الرئيسية في هذا الإصدار هي قدرات ثلاثية الأبعاد المتقدمة (المُسرَّعة بواسطة بطاقة الرسوميات) المستندة إلى Stage3D لأجهزة سطح المكتب التي تعمل بنظام Windows وMac Desktop و iOS و Android وغيرها من المنصات الرئيسية. تمت إضافة تحسينات توافقية كبيرة لمنصة iOS وغيرها من المنصات غير المخصصة لسطح المكتب. تتضمن الميزات الأخرى ترميز H.264 للكاميرات ودعم JSON الأصلي و Cubic Bézier Curves ومولد أرقام عشوائية آمن وضغط LZMA لملفات SWF والعاملين لتفريغ بعض تنفيذ التعليمات البرمجية إلى خيوط معالج أخرى وتقديم تغذية الكاميرا المُسرَّعة بواسطة بطاقة الرسوميات وتحليل الذاكرة الداخلية والأداء ومترجم ActionScript 2.0 بالإضافة إلى بعض الإضافات البسيطة الأخرى. [11]
- Flash Player 11.2 : تم إصداره في مارس 2012، وركز على إضافة ميزات أساسية لأسواق الألعاب والفيديو. تتضمن بعض الميزات في الإصدار ما يلي: دعم قفل الماوس. دعم النقر بزر الماوس الأيمن والأوسط. تعطيل قائمة السياق. دعم الرسومات المعجلة بالأجهزة/Stage 3D لنظامي التشغيل Apple iOS وAndroid عبر Adobe AIR. دعم المزيد من بطاقات الفيديو المعجلة بالأجهزة (من يناير 2008) من أجل توسيع نطاق توفر المحتوى المعجل بالأجهزة. واجهة برمجة تطبيقات جديدة لحدث Throttle (ترسل الحدث عندما يقوم Flash Player بتقييد المحتوى أو إيقافه مؤقتًا أو استئنافه). خط أنابيب فك تشفير الفيديو متعدد الخيوط على أجهزة الكمبيوتر، مما يحسن الأداء العام للفيديو على جميع منصات سطح المكتب. إشعار باستخدام الميزات المتميزة في مشغلات التصحيح؛ يتم تشغيل المحتوى دون قيود في مشغلات الإصدار.
- Flash Player 11.3 : تم إصداره في يونيو 2012، وركز على تمكين الميزات والوظائف الرئيسية لسوق الألعاب، بالإضافة إلى معالجة طلبات الميزات الشائعة من المطورين. تتضمن بعض الميزات في هذا الإصدار ما يلي: دعم إدخال لوحة المفاتيح في وضع ملء الشاشة. دعم صوتي محسّن للعمل مع الصوت منخفض الكمون. القدرة على بث القوام تدريجيًا لمحتوى Stage 3D. الوضع المحمي لـ Flash Player في Firefox . أحداث تسمية الإطار. دعم ضغط BitmapData إلى تنسيقات JPEG و PNG . دعم متطلبات الحماية المؤقتة لتطبيق Mac OS X App Store . دعم بث النص لـ Stage 3D. معلومات موسعة حول تفاصيل برنامج تشغيل GPU . رسم Bitmap باستخدام API عالي الجودة (جديد). إصدار API لأحداث الماوس الخارجية. دعم تحديث Flash Player الصامت لنظام التشغيل Mac OS. دعم القلم لأجهزة Android 4.0 (Adobe AIR). تصحيح أخطاء USB لنظام iOS (Adobe AIR). دعم محاكي iOS (Adobe AIR).
- Flash Player 11.4 : تم إصداره في أغسطس 2012، وركز على تمكين الميزات والوظائف الأساسية لسوق الألعاب، بالإضافة إلى تلبية طلبات الميزات الشائعة من المطورين. تتضمن بعض الميزات في هذا الإصدار ActionScript worker (تمكين تنفيذ ActionScript المتزامن على خيوط منفصلة)، ودعم النمذجة المتقدمة، ودعم ضغط LZMA لـ ByteArray، ودعم بطاقات الفيديو المعجلة بالأجهزة لـ Stage 3D الموسع إلى عام 2006، وتحسين أداء ActionScript عند استهداف Apple iOS، وواجهة برمجة تطبيقات مؤشر الأداء لإبلاغ عن قدرات الأداء للبيئة الحالية، ودعم القوام المضغوطة مع دعم ألفا، ودعم واجهة برمجة تطبيقات StageVideo.attachCamera، ودعم إشعارات الدفع لنظام iOS (Adobe AIR).
- Flash Player 11.5 : تم إصداره في نوفمبر 2012، وركز على تحسين الأداء والاستقرار. تتضمن بعض الميزات في هذا الإصدار دعم ByteArray المشترك لعمال ActionScript، وتتبع أخطاء المكدس في إصدارات Flash Player، وإصلاحات الأخطاء المتنوعة.
- Flash Player 11.6 : تم إصداره في مارس 2013، ويركز على تحسينات الأداء وتعزيزات الأمان والاستقرار. تتضمن بعض الميزات في هذا الإصدار القدرة على الاستعلام عن بيانات متجهات الرسومات في وقت التشغيل، وتحسينات واجهة مستخدم مربع حوار الأذونات في وضع ملء الشاشة، والقدرة على تحميل ملفات SWF في وقت التشغيل عند النشر كتطبيق AIR في وضع AOT على iOS، والتحكم الدقيق في دقة العرض المدعومة على أجهزة iOS عند النشر كتطبيق AIR، ودعم HiDPI لـ Flash Professional، والوصول إلى ActionScript 3 لعمليات الذاكرة السريعة/الجوهرات.
- Flash Player 11.7 : تم إصداره في يونيو 2013، تحت الاسم الرمزي "Geary"، ويركز هذا الإصدار على الفيديو المتميز والألعاب والأمان والاستقرار. تتضمن بعض الميزات المخطط لها لهذا الإصدار تصحيح أخطاء وقت التشغيل المقيد لنظام Android، ودعم وحدة التحكم OUYA ، والاستضافة عن بُعد لملفات SWF على نظام iOS، ومنع النسخ الاحتياطي للأشياء المشتركة على نظام iOS لدعم iCloud بشكل أفضل.
- Flash Player 11.8 : كانت Adobe تخطط لإصدار هذا الإصدار في أوائل النصف الثاني من عام 2013، تحت الاسم الرمزي "Harrison". ركز هذا الإصدار على الفيديو المتميز والألعاب والأمان والاستقرار. كانت بعض الميزات في هذا الإصدار تتضمن واجهة برمجة تطبيقات التوقف المتكررة على MovieClips ودعم GamePad على متصفحات سطح المكتب وAndroid.
الجدول الزمني حسب إصدار ActionScript
2000-2004: أكشن سكريبت "1.0"
مع إصدار Flash 5 في سبتمبر 2000، تم تحسين "الإجراءات" من Flash 4 مرة أخرى وتم تسميتها "ActionScript" لأول مرة. [12] كانت هذه هي النسخة الأولى من ActionScript مع تأثيرات من JavaScript ومعيار ECMA-262 (الإصدار الثالث)، ودعم نموذج الكائن للمعيار المذكور والعديد من أنواع البيانات الأساسية الخاصة به . يمكن إعلان المتغيرات المحلية باستخدام عبارة var ، ويمكن أيضًا إنشاء وظائف محددة من قبل المستخدم مع تمرير المعلمات وقيم الإرجاع . والجدير بالذكر أنه يمكن الآن أيضًا كتابة ActionScript باستخدام محرر نصوص بدلاً من تجميعها عن طريق اختيار الإجراءات من القوائم المنسدلة وعناصر التحكم في مربع الحوار. مع الإصدار التالي لأداة التأليف الخاصة بها، Flash MX، ومشغلها المقابل، Flash Player 6 ، ظلت اللغة دون تغيير بشكل أساسي؛ كانت هناك تغييرات طفيفة فقط، مثل إضافة عبارة switch وعامل "المساواة الصارمة" ( === )، مما جعلها أقرب إلى التوافق مع ECMA-262 . هناك ميزتان مهمتان في ActionScript تميزه عن الإصدارات اللاحقة وهما نظام النوع غير المقيد واعتماده على الميراث القائم على النموذج الأولي . يشير النوع غير المقيد إلى قدرة المتغير على الاحتفاظ بأي نوع من البيانات. يسمح هذا بتطوير البرامج النصية السريع وهو مناسب بشكل خاص لمشاريع البرمجة النصية الصغيرة. الميراث القائم على النموذج الأولي هو آلية ActionScript 1.0 لإعادة استخدام التعليمات البرمجية والبرمجة الموجهة للكائنات. بدلاً من كلمة رئيسية للفئة تحدد الخصائص المشتركة للفئة ، يستخدم ActionScript 1.0 كائنًا خاصًا يعمل كـ "نموذج أولي" لفئة من الكائنات. يتم تعريف جميع الخصائص المشتركة للفئة في كائن النموذج الأولي للفئة وكل مثيل لتلك الفئة يحتوي على رابط لكائن النموذج الأولي هذا.
2003–2006: أكشن سكريبت 2.0
تم تقديم المراجعة الرئيسية التالية للغة، ActionScript 2.0، في سبتمبر 2003 مع إصدار Flash MX 2004 ومشغله المقابل، Flash Player 7. استجابةً لطلب المستخدم على لغة مجهزة بشكل أفضل للتطبيقات الأكبر حجمًا والأكثر تعقيدًا، تميزت ActionScript 2.0 بفحص النوع في وقت التجميع والنحو القائم على الفئة ، مثل الكلمات الأساسية class و extends . وبينما سمح هذا بنهج برمجة موجه نحو الكائنات أكثر هيكلة، فإن الكود سيظل مُجمَّعًا إلى بايت كود ActionScript 1.0 ، مما يسمح باستخدامه على Flash Player 6 السابق أيضًا. بعبارة أخرى، كان نحوي الوراثة القائم على الفئة عبارة عن طبقة أعلى من النظام القائم على النموذج الأولي الحالي. باستخدام ActionScript 2.0، يمكن للمطورين تقييد المتغيرات بنوع معين عن طريق إضافة تعليق توضيحي للنوع بحيث يمكن العثور على أخطاء عدم تطابق النوع في وقت التجميع . كما قدم ActionScript 2.0 أيضًا صيغة الوراثة القائمة على الفئات حتى يتمكن المطورون من إنشاء فئات وواجهات، تمامًا كما يفعلون في اللغات القائمة على الفئات مثل Java و C++ . يتوافق هذا الإصدار جزئيًا مع مسودة مواصفات ECMAScript Fourth Edition.
2006–2020: أكشن سكريبت 3.0
في يونيو 2006، ظهر ActionScript 3.0 لأول مرة مع Adobe Flex 2.0 ومشغله المقابل، Flash Player 9. كان ActionScript 3.0 إعادة هيكلة أساسية للغة، لدرجة أنه يستخدم آلة افتراضية مختلفة تمامًا . يحتوي Flash Player 9 على آلتين افتراضيتين، AVM1 للكود المكتوب في ActionScript 1.0 و2.0، وAVM2 للمحتوى المكتوب في ActionScript 3.0. أضاف ActionScript 3.0 دعمًا محدودًا لتسريع الأجهزة ( DirectX و OpenGL ).
قدم تحديث اللغة العديد من الميزات الجديدة:
- التحقق من النوع في وقت التجميع ووقت التشغيل —توجد معلومات النوع في وقت التجميع ووقت التشغيل.
- تحسين الأداء من نظام الوراثة القائم على الفئة المنفصل عن نظام الوراثة القائم على النموذج الأولي.
- دعم الحزم ، ومساحات الأسماء ، والتعبيرات العادية .
- يتم التجميع إلى نوع جديد تمامًا من البايت كود ، وهو غير متوافق مع بايت كود ActionScript 1.0 و2.0.
- تمت مراجعة واجهة برمجة تطبيقات Flash Player وتنظيمها في حزم .
- نظام معالجة الأحداث الموحد يعتمد على معيار معالجة الأحداث DOM .
- دمج ECMAScript لـ XML (E4X) لأغراض معالجة XML .
- الوصول المباشر إلى قائمة عرض وقت تشغيل Flash للتحكم الكامل في ما يتم عرضه وقت التشغيل.
- تنفيذ متوافق تمامًا مع مسودة مواصفات الطبعة الرابعة من ECMAScript .
- دعم محدود للأشياء الديناميكية ثلاثية الأبعاد. (الدوران X وY وZ وتعيين الملمس)
فلاش لايت
- Flash Lite 1.0 : Flash Lite هي تقنية Flash التي تم تطويرها خصيصًا للهواتف المحمولة وأجهزة الإلكترونيات الاستهلاكية. تدعم Flash 4 ActionScript.
- Flash Lite 1.1 : تمت إضافة دعم Flash 4 ActionScript وواجهات برمجة التطبيقات الإضافية للأجهزة.
- Flash Lite 2.0 و2.1 : تمت إضافة الدعم لـ Flash 7 ActionScript 2.0 وبعض واجهات برمجة التطبيقات fscommand2 الإضافية.
- Flash Lite 3 : تمت إضافة الدعم لـ Flash 8 ActionScript 2.0 وتشغيل الفيديو بصيغة FLV .
- Flash Lite 4 : تمت إضافة الدعم لـ Flash 10 ActionScript 3.0 كمكون إضافي للمتصفح وتسريع الرسومات للأجهزة أيضًا.
هواء
يدعم Adobe AIR لغة ActionScript، بالإضافة إلى بعض المحتويات الموسعة، مثل محرك Stage3D الذي طورته Adobe. كما ارتفع عدد واجهات برمجة التطبيقات ( APIs ) المتاحة لـ ActionScript 3.0 بشكل كبير.
بناء الجملة
كود ActionScript حر الشكل وبالتالي يمكن إنشاؤه بأي كمية أو نمط من المسافات البيضاء يرغب فيه المؤلف. يتم اشتقاق بناء الجملة الأساسي من ECMAScript .
أكشن سكريبت 2.0
يقوم الكود التالي، الذي يعمل في أي مشغل متوافق، بإنشاء حقل نص بعمق 0، في الموضع (0, 0) على الشاشة (مقاس بالبكسل )، أي بعرض وارتفاع 100 بكسل. ثم textيتم تعيين المعلمة على السلسلة " Hello, world " ، ويتم عرضها تلقائيًا في المشغل:
createTextField ( "greet" , 0 , 0 , 0 , 100 , 100 ); greet .text = " مرحبا بالعالم" ;
عند كتابة ملفات فئة ActionScript 2.0 الخارجية، يمكن كتابة المثال أعلاه في ملف يسمى Greeter.as على النحو التالي.
class com.example.Greeter extends MovieClip { public function Greeter ( ) { var txtHello : TextField = this.createTextField ( " txtHello " , 0 , 0 , 0 , 100 , 100 ) ; txtHello.text = " Hello , world " ; } }
أكشن سكريبت 3.0
يحتوي ActionScript 3.0 على بناء جملة مشابه لـ ActionScript 2.0، ولكن مجموعة مختلفة من واجهات برمجة التطبيقات لإنشاء الكائنات. قارن النص أدناه بإصدار ActionScript 2.0 السابق:
var txtHello : TextField = new TextField ( ); txtHello . text = "مرحبا بالعالم" ; this.addChild ( txtHello ) ;
قد تكون برامج Minimal ActionScript 3.0 أكبر حجمًا وأكثر تعقيدًا إلى حد ما بسبب الفصل المتزايد بين لغة البرمجة وبيئة التطوير المتكاملة Flash (IDE).
افترض أن الملف التالي هو Greeter.as :
الحزمة com.example { استيراد flash.text.TextField ؛ استيراد flash.display.Sprite ؛
public class Greeter extends Sprite { public function Greeter () { var txtHello : TextField = new TextField (); txtHello . text = "Hello World" ; addParent ( txtHello ); } } }
يمكن أيضًا استخدام ActionScript 3 في ملفات MXML عند استخدام إطار عمل Apache's Flex :
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx= "http://ns.adobe.com/mxml/2009" xmlns:s= "library://ns.adobe.com/flex/mx/polysylabi" xmlns:mx= "library://ns.adobe.com/flex/mx" layout= "vertical" creationComplete= "initApp()" >
<fx:Script>
<![CDATA[
public function initApp (): void { // تطبع رسالة "Hello, world!" في العنوان title . text = " Hello, World!" ; } ]]> </fx:Script>
<s:Label id= "title" fontSize= "54" fontStyle= "bold" /> </s:Application>
هياكل البيانات
أنواع البيانات
يتكون ActionScript في المقام الأول من أنواع بيانات "أساسية" أو "بسيطة" تُستخدم لإنشاء أنواع بيانات أخرى. هذه الأنواع من البيانات تشبه إلى حد كبير أنواع بيانات Java . نظرًا لأن ActionScript 3 كان إعادة كتابة كاملة لـ ActionScript 2، فقد تغيرت أنواع البيانات وموروثاتها.
أنواع البيانات ذات المستوى الأعلى في ActionScript 2
- السلسلة : قائمة بالأحرف مثل "Hello World"
- الرقم : أي قيمة عددية
- Boolean : تخزين ثنائي بسيط لا يمكن أن يكون إلا "صحيح" أو "خطأ".
- الكائن : الكائن هو نوع البيانات الذي ترث منه جميع أنواع البيانات المعقدة. وهو يسمح بتجميع الأساليب والوظائف والمعلمات والكائنات الأخرى.
ActionScript 2 أنواع البيانات المعقدة
توجد أنواع بيانات "معقدة" إضافية. وهي تتطلب قدرًا أكبر من المعالج والذاكرة وتتكون من العديد من أنواع البيانات "البسيطة". بالنسبة إلى AS2، بعض أنواع البيانات هذه هي:
- MovieClip : إنشاء ActionScript يسمح بالاستخدام السهل للأشياء المرئية.
- TextField : حقل نصي ديناميكي أو حقل إدخال بسيط. يرث نوع MovieClip.
- الزر : زر بسيط به 4 إطارات (حالات): لأعلى، وفوق، ولأسفل، وضرب. يرث نوع MovieClip.
- التاريخ : يسمح بالوصول إلى المعلومات حول نقطة زمنية محددة.
- المصفوفة : تسمح بتخزين البيانات بشكل خطي.
- XML : كائن XML
- XMLNode : عقدة XML
- LoadVars : يسمح كائن Load Variables بتخزين وإرسال متغيرات HTTP POST وHTTP GET
- صوت
- نت ستريم
- اتصال الشبكة
- برنامج تحميل مقاطع الأفلام
- مستمع الحدث
أنواع البيانات الأولية في ActionScript 3 [13]
- Boolean : يحتوي نوع البيانات Boolean على قيمتين محتملتين فقط: true وfalse أو 1 و0. ولا توجد قيم أخرى صالحة.
- int : نوع البيانات int هو عدد صحيح مكون من 32 بت بين -2,147,483,648 و 2,147,483,647.
- Null : يحتوي نوع البيانات Null على قيمة واحدة فقط، وهي null. هذه هي القيمة الافتراضية لنوع البيانات String وجميع الفئات التي تحدد أنواع البيانات المعقدة، بما في ذلك فئة Object.
- الرقم : يمكن لنوع البيانات الرقم أن يمثل الأعداد الصحيحة والأعداد الصحيحة غير الموقعة والأعداد ذات الفاصلة العائمة . يستخدم نوع البيانات الرقم تنسيق الدقة المزدوجة 64 بت كما هو محدد بواسطة معيار IEEE للحسابات الثنائية ذات الفاصلة العائمة ( IEEE-754 ). يمكن لنوع الرقم تخزين الأعداد الصحيحة بين -9,007,199,254,740,992 (-2 53 ) إلى 9,007,199,254,740,992 (2 53 )، والقيم ذات الفاصلة العائمة بين Number.MAX_VALUE (1.79769313486231e+308) وNumber.MIN_VALUE (4.940656458412467e-324).
- سلسلة : يمثل نوع البيانات سلسلة من الأحرف المكونة من 16 بتًا. يتم تخزين السلاسل داخليًا كأحرف Unicode، باستخدام تنسيق UTF-16 . استخدمت الإصدارات السابقة من Flash تنسيق UTF-8.
- uint : نوع البيانات uint (عدد صحيح غير موقّع) هو عدد صحيح غير موقّع مكون من 32 بت بين 0 و4,294,967,295.
- void : يحتوي نوع البيانات void على قيمة واحدة فقط، وهي undefined. في الإصدارات السابقة من ActionScript، كانت undefined هي القيمة الافتراضية لمثيلات فئة Object. في ActionScript 3.0، القيمة الافتراضية لمثيلات Object هي null.
ActionScript 3 بعض أنواع البيانات المعقدة [13]
- المصفوفة : تحتوي على قائمة من البيانات. على الرغم من أن ActionScript 3 هي لغة ذات نوع قوي، إلا أن محتويات المصفوفة يمكن أن تكون من أي نوع ويجب إعادة القيم إلى نوعها الأصلي بعد الاسترجاع (تم إضافة الدعم للمصفوفات ذات النوع مؤخرًا مع فئة Vector).
- التاريخ : كائن تاريخ يحتوي على التمثيل الرقمي للتاريخ/الوقت.
- الخطأ : كائن خطأ عام يسمح بإعداد تقرير عن أخطاء وقت التشغيل عند رميها كاستثناء.
- flash.display:Bitmap : كائن عرض خريطة نقطية غير متحركة.
- flash.display:MovieClip : كائن عرض مقطع فيلم متحرك؛ الجدول الزمني لـ Flash هو، بشكل افتراضي، مقطع فيلم.
- flash.display:Shape : كائن شكل متجه غير متحرك.
- flash.display:SimpleButton : نوع زر تفاعلي بسيط يدعم حالات "أعلى"، و"فوق"، و"أسفل" مع منطقة ضرب عشوائية.
- flash.display:Sprite : حاوية كائن عرض بدون جدول زمني.
- flash.media:Video : كائن تشغيل فيديو يدعم النقل المباشر (التنزيل التدريجي) أو البث المباشر (RTMP). اعتبارًا من إصدار Flash Player 9.0.115.0، يتم أيضًا دعم تنسيق الفيديو عالي الدقة H.264/MP4 إلى جانب محتوى الفيديو القياسي Flash (FLV).
- flash.text:TextField : كائن حقل نص ديناميكي تفاعلي اختياري.
- flash.utils:ByteArray : يحتوي على مجموعة من البيانات الثنائية.
- flash.utils:Dictionary : القواميس هي أحد أشكال Object التي قد تحتوي على مفاتيح من أي نوع بيانات (بينما يستخدم Object دائمًا السلاسل لمفاتيحه).
- الوظيفة : الفئة الأساسية لجميع تعريفات طريقة Flash.
- الكائن : يتم تعريف نوع بيانات الكائن بواسطة فئة الكائن. تعمل فئة الكائن كفئة أساسية لجميع تعريفات الفئات في ActionScript. يمكن استخدام الكائنات في شكلها الأساسي كمصفوفات ارتباطية تحتوي على أزواج مفتاح-قيمة، حيث تكون المفاتيح عبارة عن سلاسل ويمكن أن تكون القيم من أي نوع.
- RegExp : كائن تعبير منتظم للسلاسل.
- المتجه : نوع من المصفوفات المدعومة عند النشر في Flash Player 10 أو الإصدارات الأحدث. المتجه عبارة عن مصفوفات كثيفة ومحددة النوع (يجب تعريف القيم أو أن تكون فارغة) وقد تكون ذات طول ثابت، ويتم التحقق من حدودها أثناء الاسترجاع. المتجه ليس أكثر أمانًا من المصفوفات فحسب، بل إنه يعمل بشكل أسرع أيضًا.
- XML : كائن XML منقح يعتمد على E4X (معيار ECMA-357)؛ يتم الوصول إلى العقد والسمات بشكل مختلف عن كائن ActionScript 2.0 (يتم توفير فئة قديمة تسمى XMLDocument للتوافق مع الإصدارات السابقة).
- XMLList : كائن قائم على مصفوفة لعمليات البحث عن المحتوى المختلفة في فئة XML.
استخدام أنواع البيانات
الصيغة الأساسية هي:
var variableName : VariableType = new VariableType ( param1 , param2 , ... , paramN );
لذلك من أجل إنشاء كائن فارغ:
var myObject : Object = new Object ();
أو بطريقة غير رسمية:
var myObject = {};
يتم وضع بعض الأنواع تلقائيًا في مكانها:
var myString : String = "Hello Wikipedia!" ; // سيؤدي هذا تلقائيًا إلى تعيين المتغير كسلسلة. var myNumber : Number = 5 ; // سيؤدي هذا إلى نفس الشيء بالنسبة للرقم. var myObject : Object = { param1 : "Hi!" , param2 : 76 }; // سيؤدي هذا إلى إنشاء كائن به متغيرين. // param1 عبارة عن سلسلة تحتوي على بيانات "Hi!"، // وparam2 عبارة عن رقم يحتوي على بيانات 76.
// هذا هو بناء الجملة لإنشاء مصفوفة تلقائيًا.
var myArray : Array = [ 5 , "Hello!" , { a : 5 , b : 7 }]; // يقوم بإنشاء مصفوفة بها 3 متغيرات. // الأول (0) هو رقم بقيمة 5، // والثاني (1) هو سلسلة بقيمة "Hello!"، // والثالث (2) هو كائن بقيمة { a: 5, b: 7 }.
على عكس بعض لغات البرمجة الموجهة للكائنات، لا يميز ActionScript بين الأنواع الأولية وأنواع المرجع . في ActionScript، جميع المتغيرات هي أنواع مرجعية. ومع ذلك، فإن الكائنات التي تنتمي إلى أنواع البيانات الأولية، والتي تشمل Boolean وNumber وint وuint وString، غير قابلة للتغيير. [14]
لذا، إذا تم تمرير متغير من نوع بدائي مفترض، مثل عدد صحيح إلى دالة، فإن تغيير هذا المتغير داخل الدالة لن يغير المتغير الأصلي، حيث يتم إنشاء كائن int جديد داخل الدالة. إذا تم تمرير متغير من نوع بيانات آخر (غير بدائي)، مثل XML إلى دالة، فإن تغيير هذا المتغير داخل الدالة سيغير المتغير الأصلي أيضًا، حيث لا يتم إنشاء كائن XML جديد.
يمكن تعيين قيم لبعض أنواع البيانات باستخدام الأحرف :
var item1 : String = "ABC" ; var item2 : Boolean = true ; var item3 : Number = 12 ; var item4 : Array = [ "a" , "b" , "c" ]; var item5 : Object = { name : "Actionscript" , version : "3.0" }; var item6 : XML = < node >< child /></ node >; // لاحظ أن XML البدائي غير مقتبس
المرجع في ActionScript هو مؤشر إلى مثيل لفئة. يخزن المرجع عنوان ذاكرة الكائن - ستتبع العمليات ضد المراجع قيمة المرجع إلى عنوان ذاكرة الكائن وتنفذ العملية على هذا الكائن. يمكن الوصول إلى جميع الكائنات في ActionScript من خلال المراجع بدلاً من الوصول إليها بشكل مباشر.
var item1 : XML = new XML ( "<node><child /></node>" ); var item2 : XML = item1 ; item2 . firstChild . attributes . value = 13 ; // item1 يساوي الآن item2 لأن item2 يشير ببساطة إلى ما يشير إليه item1. // كلاهما الآن: // <node><child value="13" /></node>
لا يمكن إزالة سوى الإشارات إلى كائن ما باستخدام الكلمة الأساسية "حذف". تتم إزالة الكائنات والبيانات الفعلية بواسطة جامع القمامة في Flash Player الذي يتحقق من وجود أي إشارات موجودة في مساحة ذاكرة Flash. إذا لم يتم العثور على أي إشارات (لا يتم إجراء أي إشارة أخرى إلى الكائن اليتيم)، فسيتم إزالته من الذاكرة. لهذا السبب، تتطلب إدارة الذاكرة في ActionScript تخطيطًا دقيقًا لتطوير التطبيقات.
var item1 : XML = new XML ( "<node><child /></node>" ); delete item1 ; // إذا لم يكن هناك أي مرجع آخر إلى item1 موجودًا في أي مكان آخر في التطبيق، // فسيتم إزالته في المرور التالي لمجمع القمامة
حماية الكود
مثل معظم تنسيقات ملفات البايت كود ، يمكن فك تجميع ملفات Flash SWF إلى الكود المصدري والأصول الخاصة بها (على نحو مماثل لكيفية فك تجميع ملفات Microsoft .NET ). بعض برامج فك التجميع قادرة على إعادة بناء ملف المصدر الأصلي بالكامل تقريبًا، وصولاً إلى الكود الفعلي الذي تم استخدامه أثناء الإنشاء (على الرغم من أن النتائج تختلف على أساس كل حالة على حدة). [15] [16] [17]
في مواجهة برامج فك التجميع، تم تقديم برامج تشويش ActionScript ، والتي تحول الكود إلى شكل يكسر مخرجات برنامج فك التجميع مع الحفاظ على وظائف وبنية البرنامج. تنفذ برامج تشويش عالية الجودة تحويلات معجمية مثل إعادة تسمية المعرف وتحويل تدفق التحكم وتحويل تجريد البيانات والتي تجعل من الصعب على برامج فك التجميع توليد مخرجات من المرجح أن تكون مفيدة للإنسان. برامج تشويش أقل قوة تدرج مصائد لبرامج فك التجميع. تتسبب مثل هذه البرامج في تعطل برنامج فك التجميع بشكل غير متوقع أو توليد كود مصدر غير مفهوم. [ بحاجة لمصدر ]
مراجع
- ^ نيلسون، غاري (28 أبريل 2020). "كيف سبقت أكشن سكريبت TypeScript". Medium . تم الاسترجاع في 9 يوليو 2022 .
- ^ RFC 4329 (الحد المتوافق مع EcmaScript)
- ^ "عقد آبل الضائع، هايبر كارد، وما قد لا يكون لو كانت آبل آنذاك مثل آبل اليوم". ZDNet . 17 أبريل 2011. مؤرشف من الأصل في 21 أبريل 2011. تم الاسترجاع في 4 ديسمبر 2014 .
- ^ "ActionScript 3 Language Specification". مؤرشف من الأصل في 27 مارس 2017. تم الاسترجاع 12 نوفمبر 2016 .
- ^ Brimelow, Lee (18 أغسطس 2008). "ستة أسباب لاستخدام ActionScript 3.0". Adobe Systems Incorporated . تم الاسترجاع في 18 يونيو 2010 .
- ^ Grossman, Gary; Huang, Emmy (27 يونيو 2006). "نظرة عامة على ActionScript 3.0". Adobe Systems Incorporated . تم الاسترجاع في 18 يونيو 2010 .
- ^ "معيار ECMA-262". Ecma-international.org . تم الاسترجاع في 22 أبريل 2013 .
- ^ Waldemar Horwat, ed. (30 يونيو 2003). "ECMAScript 4 Netscape Proposal". Netscape . مؤرشف من الأصل في 11 يوليو 2007. تم الاسترجاع في 11 أبريل 2019 .
- ^ "Flash Player | Adobe Flash Player 11 | Overview". Adobe.com. 9 أبريل 2013. تم الاسترجاع في 22 أبريل 2013 .
- ^ "Adobe Labs – Adobe Flash Player 10.1". Labs.adobe.com. مؤرشف من الأصل في 5 يناير 2010. تم الاسترجاع في 17 ديسمبر 2009 .
- ^ "ملاحظات حول إصدار Flash Player 11 وAIR 3 لمختبرات Adobe" (PDF) . مؤرشف من الأصل (PDF) في 14 يوليو 2011.
- ^ "ملاحظات حول إصدار Flash Player 11 وAIR 3". helpx.adobe.com . تم الاسترجاع في 7 أكتوبر 2016 .
- ^ "وصف أنواع البيانات + توثيق Flash CS3". مؤرشف من الأصل في 2 نوفمبر 2007. تم الاسترجاع في 13 يوليو 2007 .
- ^ "Flex 3 – معلمات الدالة". Livedocs.adobe.com. مؤرشف من الأصل في 12 فبراير 2009. تم الاسترجاع في 17 ديسمبر 2009 .
- ^ "مراجعة جهة خارجية لبرنامج فك تجميع آخر". Flashmagazine.com. 21 أكتوبر 2007. مؤرشف من الأصل في 20 يونيو 2017. تم الاسترجاع في 22 أبريل 2013 .
- ^ "تعليقات العملاء على أحد برامج فك تشفير الفلاش". Topshareware.com . تم الاسترجاع في 22 أبريل 2013 .
- ^ تعليقات العملاء على منتج فلاش آخر محفوظ في 18 أغسطس 2006، على موقع Wayback Machine
روابط خارجية
- الموقع الرسمي ، مركز تكنولوجيا ActionScript
- مرجع لغة ActionScript 2.0 محفوظ في 31 يناير 2013، على موقع Wayback Machine
- مرجع لغة ومكونات ActionScript 3.0
- عناصر اللغة
- ملخص الحزمة
- الملاحق
- Flex 3 LiveDocs: برمجة ActionScript 3.0
- Adobe – مركز مطوري Flash
- مجموعة أدوات Adobe Flex
- وارن، توم (25 يوليو 2017). "أدوبي ستتخلص أخيرًا من فلاش في عام 2020". ذا فيرج . مؤرشف من الأصل في 25 يوليو 2017. تم الاسترجاع في 16 ديسمبر 2020 .
