AnimationAction.html 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. <!DOCTYPE html>
  2. <html lang="ar">
  3. <head>
  4. <meta charset="utf-8" />
  5. <base href="../../../" />
  6. <script src="page.js"></script>
  7. <link type="text/css" rel="stylesheet" href="page.css" />
  8. </head>
  9. <body class="rtl">
  10. <h1>[name]</h1>
  11. <p class="desc">
  12. تقوم AnimationActions بجدولة أداء الرسوم المتحركة المخزنة في [page:AnimationClip AnimationClips].
  13. <br /><br />
  14. ملاحظة: يمكن ربط معظم أساليب AnimationAction.<br /><br />
  15. للحصول على نظرة عامة حول العناصر المختلفة لنظام الرسوم المتحركة three.js ، راجع مقالة "نظام الحركات" في قسم "الخطوات التالية" من الدليل.
  16. </p>
  17. <h2>المنشئ (Constructor)</h2>
  18. <h3>[name]( [param:AnimationMixer mixer], [param:AnimationClip clip], [param:Object3D localRoot] )</h3>
  19. <p>
  20. [page:AnimationMixer mixer] هو *AnimationMixer* الذي يتحكم فيه هذا الإجراء.<br />
  21. [page:AnimationClip clip] هو *AnimationClip* الذي يحتفظ ببيانات الرسوم المتحركة لهذا الإجراء.<br />
  22. [page:Object3D localRoot] هو الكائن الجذر الذي يتم تنفيذ هذا الإجراء عليه.<br /><br />
  23. ملاحظة: بدلاً من استدعاء هذا المُنشئ مباشرةً ، يجب إنشاء AnimationAction برقم [page:AnimationMixer.clipAction] نظرًا لأن هذه الطريقة توفر التخزين المؤقت للحصول على أداء أفضل.
  24. </p>
  25. <h2>الخصائص (Properties)</h2>
  26. <h3>[property:Boolean clampWhenFinished]</h3>
  27. <p>
  28. إذا تم ضبط *clampWhenFinished* على true ، فسيتم تلقائيًا إيقاف [page:.paused paused] للرسوم المتحركة مؤقتًا في إطارها الأخير.<br /><br />
  29. إذا تم ضبط *clampWhenFinished* على false ، فسيتم تحويل [page:.enabled enabled] تلقائيًا إلى false عند انتهاء آخر حلقة من الإجراء ، بحيث لا يكون لهذا الإجراء أي تأثير آخر.<br /><br />
  30. القيمة الافتراضية هو خطأ (false).<br /><br />
  31. ملاحظة: *clampWhenFinished* ليس له أي تأثير إذا تم مقاطعة الإجراء (يكون له تأثير فقط إذا انتهت الحلقة الأخيرة بالفعل).
  32. </p>
  33. <h3>[property:Boolean enabled]</h3>
  34. <p>
  35. يؤدي تعيين *enabled* إلى *false* إلى تعطيل هذا الإجراء ، بحيث لا يكون له أي تأثير. الافتراضي هو *true*.<br /><br />
  36. عند إعادة تمكين الإجراء ، يستمر الرسم المتحرك من وقته الحالي [page:.time time] (العدد *enabled* إلى *false* لا يعيد تعيين الإجراء).<br /><br />
  37. ملاحظة: لا يؤدي إعداد *enabled* إلى *true* إلى إعادة تشغيل الرسوم المتحركة تلقائيًا. سيؤدي ضبط *enabled* إلى *true* إلى إعادة تشغيل الرسوم المتحركة فورًا فقط إذا تم استيفاء الشرط التالي:
  38. [page:.paused paused] تحتوي قيمة *false* ، لم يتم إلغاء تنشيط هذا الإجراء في هذه الأثناء (بتنفيذ أمر [page:.stop stop] أو [page:.reset reset]) ، وليس [page:.weight weight] أو [page:.timeScale timeScale] يساوي 0.
  39. </p>
  40. <h3>[property:Number loop]</h3>
  41. <p>
  42. وضع التكرار (يمكن تغييره بـ [page:.setLoop setLoop]). الافتراضي هو [page:Animation THREE.LoopRepeat] (مع عدد لا نهائي من [page:.repetitions repetitions])<br /><br />
  43. يجب أن يكون أحد هذه الثوابت:<br /><br />
  44. [page:Animation THREE.LoopOnce] - تشغيل المقطع مرة واحدة ،<br />
  45. [page:Animation THREE.LoopRepeat] - تشغيل المقطع مع العدد المختار من *التكرارات* ،
  46. في كل مرة تقفز من نهاية المقطع مباشرة إلى بدايته ،<br />
  47. [page:Animation THREE.LoopPingPong] - تشغيل المقطع مع العدد المختار من *التكرارات* ، بدلاً من التشغيل للأمام والخلف.
  48. </p>
  49. <h3>[property:Boolean paused]</h3>
  50. <p>
  51. يؤدي تعيين *paused* إلى *true* إلى إيقاف تنفيذ الإجراء مؤقتًا عن طريق تعيين مقياس الوقت الفعال على 0. الافتراضي هو *false*.<br /><br />
  52. </p>
  53. <h3>[property:Number repetitions]</h3>
  54. <p>
  55. عدد التكرارات التي تم إجراؤها [page:AnimationClip] على مدار هذا الإجراء. يمكن تعيينه عبر [page:.setLoop setLoop]. الافتراضي هو *Infinity*.<br /><br />
  56. ضبط هذا الرقم ليس له أي تأثير ، إذا تم ضبط [page:.loop loop mode] على [page:Animation THREE.LoopOnce].
  57. </p>
  58. <h3>[property:Number time]</h3>
  59. <p>
  60. the local time of this action (in seconds, starting with 0).<br /><br />
  61. يتم تثبيت القيمة أو لفها إلى 0 ... مدة المقطع (وفقًا لحالة الحلقة).
  62. يمكن تغير قيمتها بالنسبة إلى وقت لخالط الحركات الرئيسي عن طريق تغيير [page:.timeScale timeScale] (باستخدام [page:.setEffectiveTimeScale setEffectiveTimeScale] أو [page:.setDuration setDuration]).<br />
  63. </p>
  64. <h3>[property:Number timeScale]</h3>
  65. <p>
  66. Sعامل التحجيم للوقت [page:.time time]. تؤدي القيمة 0 إلى توقف الرسوم المتحركة مؤقتًا. تؤدي القيم السالبة إلى تشغيل الرسوم المتحركة بشكل عكسي. الافتراضي هو 1.<br /><br />
  67. الخصائص / الطرق المتعلقة *timeScale* (على التوالي *time*) هم:
  68. [page:.getEffectiveTimeScale getEffectiveTimeScale],
  69. [page:.halt halt],
  70. [page:.paused paused],
  71. [page:.setDuration setDuration],
  72. [page:.setEffectiveTimeScale setEffectiveTimeScale],
  73. [page:.stopWarping stopWarping],
  74. [page:.syncWith syncWith],
  75. [page:.warp warp].
  76. </p>
  77. <h3>[property:Number weight]</h3>
  78. <p>
  79. درجة تأثير هذا الإجراء (في المجال القائم بين [0 ، 1]). يمكن استخدام القيم بين 0 (بدون تأثير) و 1 (تأثير كامل) للمزج بين عدة إجراءات. الافتراضي هو 1. <br /><br />
  80. الخصائص / الطرق المتعلقة *weight* هي:
  81. [page:.crossFadeFrom crossFadeFrom],
  82. [page:.crossFadeTo crossFadeTo],
  83. [page:.enabled enabled],
  84. [page:.fadeIn fadeIn],
  85. [page:.fadeOut fadeOut],
  86. [page:.getEffectiveWeight getEffectiveWeight],
  87. [page:.setEffectiveWeight setEffectiveWeight],
  88. [page:.stopFading stopFading].
  89. </p>
  90. <h3>[property:Boolean zeroSlopeAtEnd]</h3>
  91. <p>
  92. يتيح تشغيل السلس بدون مقاطع منفصلة للبداية والحلقة والنهاية. الافتراضي هو *true*.
  93. </p>
  94. <h3>[property:Boolean zeroSlopeAtStart]</h3>
  95. <p>
  96. يتيح تشغيل السلس بدون مقاطع منفصلة للبداية والحلقة والنهاية. الافتراضي هو *true*.
  97. </p>
  98. <h2>الوظائف (Methods)</h2>
  99. <h3>[method:this crossFadeFrom]( [param:AnimationAction fadeOutAction], [param:Number durationInSeconds], [param:Boolean warpBoolean] )</h3>
  100. <p>
  101. يؤدي هذا الإجراء إلى تلاشي [page:.fadeIn fade in] ، مما يؤدي إلى تلاشي إجراء آخر في نفس الوقت ، خلال الفترة الزمنية المنقضية. يمكن تقييد هذه الطريقة.<br /><br />
  102. إذا كانت warpBoolean تحمل قيمة true ، فسيتم تطبيق [page:.warp warping] إضافيًا (تغييرات تدريجية في المقاييس الزمنية).<br /><br />
  103. ملاحظة: كما هو الحال مع *fadeIn*/*fadeOut* ، يبدأ / ينتهي التلاشي بوزن 1.
  104. </p>
  105. <h3>[method:this crossFadeTo]( [param:AnimationAction fadeInAction], [param:Number durationInSeconds], [param:Boolean warpBoolean] )</h3>
  106. <p>
  107. يؤدي هذا الإجراء إلى تلاشي [page:.fadeOut fade out] ، يتلاشى في إجراء آخر في وقت واحد ، خلال الفترة الزمنية المنقضية. يمكن تقييد هذه الطريقة ضمن سلسلة.<br /><br />
  108. إذا كانت warpBoolean صحيحة ، فسيتم تطبيق [page:.warp warping] إضافيًا (تغييرات تدريجية في المقاييس الزمنية).<br /><br />
  109. ملاحظة: كما هو الحال مع *fadeIn*/*fadeOut* ، يبدأ / ينتهي التلاشي بوزن 1.
  110. </p>
  111. <h3>[method:this fadeIn]( [param:Number durationInSeconds] )</h3>
  112. <p>
  113. يزيد [page:.weight weight] هذا الإجراء تدريجياً من 0 إلى 1 ، خلال الفترة الزمنية المنقضية. يمكن تقييد هذه الطريقة ضمن سلسلة.
  114. </p>
  115. <h3>[method:this fadeOut]( [param:Number durationInSeconds] )</h3>
  116. <p>
  117. يقلل [page:.weight weight] هذا الإجراء تدريجيًا من 1 إلى 0 ، خلال الفترة الزمنية المنقضية. يمكن تقييد هذه الطريقة ضمن سلسلة.
  118. </p>
  119. <h3>[method:Number getEffectiveTimeScale]()</h3>
  120. <p>
  121. تُرجع مقياس الوقت الفعال (مع الأخذ في الاعتبار حالات التواء و قيمة [page:.paused paused] الحالية).
  122. </p>
  123. <h3>[method:number getEffectiveWeight]()</h3>
  124. <p>
  125. تُرجع الوزن الفعال (مع الأخذ في الاعتبار حالات التلاشي الحالية و [page:.enabled enabled]).
  126. </p>
  127. <h3>[method:AnimationClip getClip]()</h3>
  128. <p>
  129. تُرجع المقطع الذي يحتوي على بيانات الرسوم المتحركة لهذا الإجراء.
  130. </p>
  131. <h3>[method:AnimationMixer getMixer]()</h3>
  132. <p>
  133. تُرجع الخالط المسؤول عن تشغيل هذا الإجراء.
  134. </p>
  135. <h3>[method:Object3D getRoot]()</h3>
  136. <p>
  137. تُرجع الكائن الجذر الذي تم تنفيذ هذا الإجراء عليه.
  138. </p>
  139. <h3>[method:this halt]( [param:Number durationInSeconds] )</h3>
  140. <p>
  141. تعمل على إبطاء سرعة هذه الرسوم المتحركة إلى 0 من خلال إنقاص [page:.timeScale timeScale] تدريجيًا (بدءًا من قيمتها الحالية) ، خلال الفترة الزمنية المنقضية. يمكن تقييد هذه الطريقة ضمن سلسلة.
  142. </p>
  143. <h3>[method:Boolean isRunning]()</h3>
  144. <p>
  145. تُرجع true إذا كان الإجراء [page:.time time] قيد التشغيل حاليًا.<br /><br />
  146. بالإضافة إلى تفعيله في الخالط (انظر [page:.isScheduled isScheduled]) ، يجب استيفاء الشروط التالية:
  147. <br/>
  148. [page:.paused paused] يساوي false ،<br/> [page:.enabled enabled] يساوي true ،
  149. <br/>
  150. [page:.timeScale timeScale] يختلف عن 0 ، ولا توجد جدولة لبدء متأخر ([page:.startAt startAt]).<br /><br />
  151. ملاحظة: لا يعني كون *isRunning* تحمل قيمة *true* أنه يمكن رؤية الرسوم المتحركة بالفعل. هذا هو الحال فقط ، إذا تم تعيين [page:.weight weight] بشكل إضافي على قيمة غير صفرية.
  152. </p>
  153. <h3>[method:Boolean isScheduled]()</h3>
  154. <p>
  155. تُرجع قيمة *true* ، إذا تم تنشيط هذا الإجراء في الخالط.<br /><br />
  156. ملاحظة: هذا لا يعني بالضرورة أن الرسوم المتحركة تعمل بالفعل (قارن الشروط الإضافية لـ [page:.isRunning isRunning]).
  157. </p>
  158. <h3>[method:this play]()</h3>
  159. <p>
  160. يعلم الخالط بضرورة البدء في تنشيط الحدث (action). يمكن تقييد هذه الطريقة ضمن سلسلة. <br /><br />
  161. ملاحظة: لا يعني تنشيط هذا الإجراء بالضرورة أن الرسوم المتحركة تبدأ على الفور: إذا كان الإجراء قد انتهى بالفعل من قبل (من خلال الوصول إلى نهاية الحلقة الأخيرة) ، أو إذا تم تعيين وقت لبدء متأخر (عبر [page:.startAt startAt]) ،
  162. يجب تنفيذ [page:.reset reset] أولاً. يمكن لبعض الإعدادات الأخرى ([page:.paused paused]=true, [page:.enabled enabled]=false,
  163. [page:.weight weight]=0, [page:.timeScale timeScale]=0) منع تشغيل الرسوم المتحركة أيضًا.
  164. </p>
  165. <h3>[method:this reset]()</h3>
  166. <p>
  167. يتم إعادة الحدث إلى وضع البداية. يمكن تقييد هذه الطريقة ضمن سلسلة.<br /><br />
  168. تقوم هذه الطريقة بتعيين [page:.paused paused] إلى false ، و [page:.enabled enabled] إلى true ، ومن [page:.time time] إلى 0 ، وتقطع أي تزييف مجدول ، وتزيل عدد الحلقات الداخلية وجدولة البدء المتأخر.<br /><br />
  169. ملاحظة: يتم استدعاء. *reset* دائمًا بواسطة [page:.stop stop] ، ولكن *reset* لا يتصل بـ *stop* نفسه.
  170. هذا يعني: إذا كنت تريد كلاهما ، reset وstop ، لا تتصل بـ *reset* بل إتصل بـ *stop* بدلا من ذلك.
  171. </p>
  172. <h3>[method:this setDuration]( [param:Number durationInSeconds] )</h3>
  173. <p>
  174. يضبط المدة لحلقة واحدة من هذا الإجراء (بضبط [page:.timeScale timeScale] وإيقاف أي إلتفاف مجدول). يمكن تقييد هذه الطريقة ضمن سلسلة.
  175. </p>
  176. <h3>[method:this setEffectiveTimeScale]( [param:Number timeScale] )</h3>
  177. <p>
  178. يضبط [page:.timeScale timeScale] ويوقف أي إلتفاف مجدول. يمكن تقييد هذه الطريقة ضمن سلسلة. <br /><br />
  179. إذا كانت القيمة [page:.paused paused] تحمل false ، فسيتم أيضًا تعيين المقياس الزمني الفعال (خاصية داخلية) على هذه القيمة ؛
  180. وإلا فسيتم تعيين النطاق الزمني الفعال (الذي يؤثر بشكل مباشر على الرسم المتحرك في هذه اللحظة) على 0.<br /><br />
  181. ملاحظة: *paused* لن يتم تحويله إلى *true* تلقائيًا ، إذا تم ضبط *timeScale* على 0 بهذه الطريقة.
  182. </p>
  183. <h3>[method:this setEffectiveWeight]( [param:Number weight] )</h3>
  184. <p>
  185. تضبط [page:.weight weight] وتوقف أي تضاؤل مجدول. يمكن تقييد هذه الطريقة ضمن سلسلة. <br /><br />
  186. إذا كانت قيمة [page:.enabled enabled] هي true ، فسيتم أيضًا تعيين الوزن الفعال (خاصية داخلية) على هذه القيمة ؛
  187. وإلا فسيتم تعيين الوزن الفعال (الذي يؤثر بشكل مباشر على الرسم المتحرك في هذه اللحظة) على 0.<br /><br />
  188. ملاحظة: لن يتم تحويل *enabled* إلى false تلقائيًا ، إذا تم ضبط *weight* على 0 بهذه الطريقة.
  189. </p>
  190. <h3>[method:this setLoop]( [param:Number loopMode], [param:Number repetitions] )</h3>
  191. <p>
  192. يعين [page:.loop loop mode] وعدد [page:.repetitions repetitions]. يمكن تقييد هذه الطريقة ضمن سلسلة
  193. </p>
  194. <h3>[method:this startAt]( [param:Number startTimeInSeconds] )</h3>
  195. <p>
  196. يحدد وقت البداية المتأخرة (عادةً ما يتم تمريره كـ [page:AnimationMixer.time] + deltaTimeInSeconds). يمكن تقييد هذه الطريقة ضمن سلسلة. <br /><br />
  197. ملاحظة: ستبدأ الرسوم المتحركة فقط في الوقت المحدد ، إذا تم ربط *startAt* بـ [page:.play play] ،
  198. أو إذا تم بالفعل تنشيط الإجراء في الخالط (عن طريق استدعاء سابق لـ. *play* ، دون إيقافه أو إعادة تعيينه في هذه الأثناء).
  199. </p>
  200. <h3>[method:this stop]()</h3>
  201. <p>
  202. يخبر الخالط بإلغاء تنشيط هذا الإجراء. يمكن تقييد هذه الطريقة ضمن سلسلة. <br /><br />
  203. سيتم إيقاف الإجراء على الفور وإعادة تعيين [page:.reset reset] بالكامل.<br /><br />
  204. ملاحظة: يمكنك إيقاف جميع الإجراءات النشطة على نفس الخالط دفعة واحدة عبر [page:AnimationMixer.stopAllAction mixer.stopAllAction].
  205. </p>
  206. <h3>[method:this stopFading]()</h3>
  207. <p>
  208. يوقف أي [page:.fadeIn fading] مجدولًا يتم تطبيقه على هذا الحدث. يمكن تقييد هذه الطريقة ضمن سلسلة.
  209. </p>
  210. <h3>[method:this stopWarping]()</h3>
  211. <p>
  212. يوقف أي [page:.warp warping] مجدولًا يتم تطبيقه على هذا الحدث. يمكن تقييد هذه الوظيفة ضمن سلسلة.
  213. </p>
  214. <h3>[method:this syncWith]( [param:AnimationAction otherAction] )</h3>
  215. <p>
  216. يزامن هذا الإجراء مع الإجراء الآخر الذي تم تمريره. يمكن تقييد هذه الوظيفة ضمن سلسلة. <br /><br />
  217. تتم المزامنة عن طريق تعيين قيم [page:.time time] و [page:.timeScale timeScale] لهذا الإجراء على القيم المقابلة للإجراء الآخر (إيقاف أي التواء مجدول).<br /><br />
  218. ملاحظة: لن يتم الكشف عن التغييرات المستقبلية في *time* و *timeScale* للإجراء الآخر.
  219. </p>
  220. <h3>[method:this warp]( [param:Number startTimeScale], [param:Number endTimeScale], [param:Number durationInSeconds] )</h3>
  221. <p>
  222. يغير سرعة التشغيل ، خلال الفترة الزمنية المنقضية ، عن طريق تعديل [page:.timeScale timeScale] تدريجيًا من *startTimeScale* إلى *endTimeScale*.يمكن تقييد هذه الوظيفة ضمن سلسلة.
  223. </p>
  224. <h2>الأحداث (Events)</h2>
  225. <p class="desc">
  226. هناك حدثان يشيران عند انتهاء حلقة واحدة من الإجراء على التوالي. يمكنك الرد عليهم من خلال:
  227. </p>
  228. <code>
  229. mixer.addEventListener( 'loop', function( e ) { …} ); // properties of e: type, action and loopDelta
  230. mixer.addEventListener( 'finished', function( e ) { …} ); // properties of e: type, action and direction
  231. </code>
  232. <h2>المصدر (Source)</h2>
  233. <p>
  234. [link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
  235. </p>
  236. </body>
  237. </html>