محاكي مشغل Flash Ruchnow على iOS
العمل قيد التقدم.
انظر Ruffle.RS للحصول على مقدمة عامة.
خيارات التصميم
قد يكون الشخص العادي قد لف الصدأ في بعض extern "C" fn ، ثم يستخدم Swiftui ، أو على الأقل موضوعية C لقشرة واجهة المستخدم. ربما أوصي بمعظم حالات الاستخدام.
أنا أقوم بتطوير objc2 ، وأريد تحسين واجهة المستخدم لذلك ، لذلك قررت أن أكون غير untorodox بعض الشيء ، وأن أفعل كل شيء في الصدأ.
الاختبار
قم بتشغيل اللاعب الأساسي على Mac Catalyst مع:
cargo bundle --target=aarch64-apple-ios-macabi --bin run_swf && ./target/aarch64-apple-ios-macabi/debug/bundle/ios/Ruffle.app/run_swf
واجهة المستخدم
على غرار https://getutm.app/ ، يجب أن يكون لدينا:
- مكتبة "مثبتة" SWFS/حزم/روابط محفوظة ، قابلة للتحرير.
- عند اختيار SWF ، يعرض شريط التنقل في الأعلى خيارات مختلفة
- فتح لوحة المفاتيح (ربما؟)
- قائمة السياق "play ، rewind ، forward ، back ، etc."؟
- السماح بالتغيير بين المقياس
- زر العودة للعودة إلى المكتبة
- "إضافة" و "تحرير" هما تدفقان مختلفان ، ويجب أن تظهر اثنين من واجهة المستخدم المختلفة
- "إضافة" لا يجب أن تظهر جميع الإعدادات الإضافية ؛ إنه يتعلق فقط بالحصول على الملف. يمكن للمستخدم تحريره لاحقًا.
إعدادات عنصر المكتبة
يتم تخزين الإعدادات لكل حزمة كشكش.
-
PlayerOptions- https://github.com/ruffle-rs/ruffle/blob/master/frontend-utils/src/bundle/readme.md#player
- المدخلات:
- قابل للتكوين
- انقلب لمفاتيح السهم؟
- https://openemu.org/ هل هو جيد ، ما يعادل iOS؟
- اسم مخصص؟
- صورة مخصصة؟
أفكار التخزين
الأهداف:
- تخزين حزمة كشكش.
- تخزين إعدادات المستخدم.
- تخزين البيانات التي قد تخزين SWF نفسها (متجر القيمة الرئيسية).
- مزامنة مع iCloud.
- كن متخلفًا وإلى الأمام متوافقًا مع إصدارات جديدة من تطبيق الكشكش.
لذلك ، نريد أن ندعم عدة أوضاع إطلاق:
- استيراد حزمة بشكل دائم.
- افتح حزمة كشكش دون الاستيراد.
- ماذا يحدث عندما تتحرك الحزمة بالنسبة إلى إعدادات المستخدم؟
الحزم ، عند استيرادها ، يتم إلغاء التعبئة من ZIP ، وأعيدت تسميتها إلى bundle.ruf وانتقلت إلى library/$random_uuid/ ، لعدم التعارض مع حزم أخرى تحمل نفس الاسم. يتم تحويل SWFs المستوردة إلى حزمة كشكش مع name = "file_stem", url = "file:///file_stem.swf" . يتم تخزين الملفات على القرص في دليل التطبيق. يتم تخزين إعدادات المستخدم في settings.toml toml بجانب bundle.ruf . بيانات التطبيق في app_data/ .
قاعدة المزامنة هي "أحدث الانتصارات". يجب أن يكون هذا جيدًا إذا قام المستخدم بتعديل إعداداته على جهازين مختلفين ، على الرغم من أنه قد يتطلب منطقًا مختلفًا لبيانات التطبيق.
لاحظ أنه كان بإمكاننا استخدام نموذج بيانات أساسي ، لكن هذا أمر صعب ولن يساعدنا حقًا عندما يتم تعريف إعداداتنا في الغالب بواسطة حزمة الكشكش.
مصطلحات
ماذا نسمي SWF؟ "لعبة"؟ "فيلم"؟ "SWF"؟ "فلاش الرسوم المتحركة"؟
يخطط
- احصل على مستخدم كشكش يعمل في
UIView - قم بتوصيل بطريقة ما لبدءه باستخدام SWF على الجهاز المحلي
تودو
- تعيين
idleTimerDisabled في الوقت المناسب - استخدم اللون الأبيض للتسميات ، البرتقالي للأزرار
- إضافة زر الإعدادات في عنصر المكتبة
الخيارات
- استخدم عن قصد
public.app-category.games للحصول على أداء أفضل ("وضع اللعبة" على MacOS).- هذا ليس بالضرورة الخيار الصحيح للكشكش ، لكنه الأقرب.
- ليس من المنطقي أن يكون لديك إعدادات جذر كما في إصدار سطح المكتب
- لا يوجد شريط علامات تبويب ، غير مرغوب فيه حقًا ، لأننا نريد عمومًا أن تملأ واجهة مستخدم SWF معظم الشاشة
- على الرغم من أنه إذا قررنا إضافة طريقة سهلة للتنزيل من مصادر "موثوقة" ، فيمكننا إضافة شريط تبويب لذلك
- شريط التنقل مفيد رغم ذلك
- لعرض بعض الإعدادات لـ SWF الحالي
- للعودة إلى المكتبة
- الاختباء عند الدخول بملء الشاشة؟