سؤال

في برنامج Script Flash Doctor 3، عندما تحتاج إلى تحميل النص، يمكنك استخدام فئة تسمى URLLoader, ، وعندما تحتاج إلى تحميل صورة (أو .swf)، يمكنك استخدام فئة تسمى "Loader". بقدر ما أعرف، تحميل .BMP مع URLLoader لا يكون عديم الفائدة كما تحميل .xml في محمل - لا يحسب.

أقوم بفئة مقابلة قائمة انتظار من الأصول الخارجية التي سيتم تحميلها - ولكن بصرف النظر عن تقسيم عنوان URL الهدف للتحقق من ملحق الملف، لا يمكنني معرفة طريقة جيدة لمعرفة ما إذا كان كل URL يتطلب URLLoader أو محمل. على أي حال، يمكن تخيله أن عنوان URL .php قد يعود إما صورة أو مستند - لذلك لا توجد طريقة للعناصر على أسماء الملفات لإملاء النوع المناسب من فئة التحميل الصحيحة لاستخدامها.

أي أفكار حول كيفية اكتشاف الطبقة المناسبة بشكل موثوق لهذا الوظيفة على أساس URL-by-url؟

هل كانت مفيدة؟

المحلول

حسنا، سؤال الأكثر صعوبة، يحدد نوع الهدف ...

  1. بالنظر إلى عنوان URL بسيط إلى حد ما، ولكن قد لا يعمل دائما ... بعض الناس يخدمون الصور من PHPS وهلم جرا ...
  2. يمكنك القيام بذلك مثل المتصفح ... بدء التحميل، ثم انظر إلى ما هو عليه ... الآن مرة أخرى، هناك إمكانيات متعددة ...
    1. قم بتحميل البيانات كبيانات ثنائية ... عند الانتهاء، انظر إلى تسلسل البداية ... هل هو PNG (89 50 4E 47 0D 0A 1A 0A) gif (47 49 46 38 39 61) JPEG (FF E0) SWF ("FWS" (مضحك، أليس كذلك؟))؟ يجب أن يكون أي شيء آخر نصا أو نصا يعتمد على ... في حالة الصورة، قم بتحميله في Loader مع Loader::loadBytes ... كن حذرا مع SWF على الرغم من ... يجب عليك فقط تحميل الصناديق الصناعية الرسومية مثل هذا ... في أي حالة أخرى، تحويله إلى سلسلة باستخدام الترميز الصحيح (يتم تقديم البيانات النصية بشكل مثالي في UTF8) ... ثم ربما يمكنك بالفعل تخمين ما إذا كان يمكن أن يكون XML أو JSON أو متغيرات ترميز URL ... حاول تحليل (باستخدام الفصول الدراسية XML, com.adobe.serialization.JSON, flash.net.URLVariables) ... إذا فشل كل شيء، فمن المحتمل أن يكون مجرد نص (يمكنك محاولة التحقق من ذلك بشكل سطح ... إذا كنت تريد بعض المدخلات على ذلك، اترك لي تعليقا) ...
    2. هل HTTP نفسك ... افتح مأخذ توصيل وتحميل المصدر ... سوف تحصل على أنواع MIME بالإضافة إلى ذلك ... لا شيء يمكنك الاعتماد عليه، لكنه يساعد ... هناك HTTP التنفيذ في AS3 ... بمجرد الحصول على البيانات
  3. اجتياز النوع يدويا ... نقي وبسيط ... وأنت لا تعتمد على أي شخص آخر ...

هناك أيضا فرق مهم بين Loader و Urlloader. ملفات السياسة ...

أيضا، تحميل SWF، ليست مجرد أصول رسومية خارجية فقط، لكنك تريد حقا واجهة مع، يجب ألا تستخدم هذا، لأنك تحتاج إلى التحكم في LoaderContext وما إلى ذلك ...

لذلك، نعم ... أيا كانت الطريقة التي تختارها، حظا سعيدا ...؛)

نايتز

back2dos

نصائح أخرى

bulkload. هل بعض التخمين بناء على عنوان URL، ربما تأخذ نظرة خاطفة في المصدر ونرى كيف يفعلون ذلك؟

شخصيا، أود أن حدد بالضبط كيف ترغب في تحميل الكائن إذا كانت صورة أو XML. منذ أن كتبت بعض لوادر قائمة الانتظار، أقترح أنك لا تتبع سلسلة URL فقط ولكن مجموعة من الكائنات التي تحتوي على أشياء مثل، وعن url للتحميل، إذا كان قد تم تحميل، أولوية التحميل، واكتب. هنا بعض رمز PSudo.

class QueueObject{
  var URLtoLoad:String;
  private var hasLoaded:Boolean = false;
  var isDataObject:Boolean = false;
  var queuePriority:Number = 3; // 
}

الآن في التعليمات البرمجية الخاصة بك عندما تريد إضافة شيء إلى قائمة انتظارك.

ببساطة اذهب

var loadObject:QueueObject = new QueueObject();
loadObject.URLtoLoad = "http://theurl.com/somedata.xml";
loadObject. isDataObject= true;

// الآن دفع هذا إلى فئة محمل رهيبة التي كتبتها والتي ستدير قائمة الانتظار. وأود أن أرسل الكائن إلى التحميل، والرجوع إلى النطاق الحالي، على سبيل المثال، هذا، واسم الوظيفة التي تريد الاتصال بها عند تحميل هذا الكائن.

MyStaticLodingClass.addQueueObject(loadObject, this, myFunctionThatYouWillCallWhenDone); 

يجب أن تحتوي هذه الفئة أعلاه الآن على صفيف يمكنك الفرز حسب الأولوية لتعطيك العناصر لتحميلها، ما هي أنواعها وعنوان URL الخاص بها. بهذه الطريقة يمكنك

هذا قد يساعد أم لا.

من الحكمة الأخرى جعل شيئا لمعرفة نوع الكائن الذي تحاول تحميله، مثل BMP واستخدام التحميل الصحيح بناء على بحث لهذا الكائن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top