سؤال

لدي بعض رمز AS2 الذي يفتح ملف SWF من خلال httphandler.

أحاول الحصول على البرنامج للتعرف على متى يكون الملف المطلوب مفقودًا.

شملت محاولتي الأولى استخدام LoadVars و "Load" ، واتصال LoadMovie فقط إذا تم تحميل الملف بنجاح (وجد التقنية في مكان ما هنا). ومع ذلك ، وجدت أن وظيفة ProcessRequest في httphandler تم استدعاؤها مرتين عندما يكون الملف موجودًا. من المنطقي - مرة واحدة للتحميل ، مرة واحدة لـ loadmovie.

الآن أنا أستخدم MovieCliploader بدلاً من ذلك (وجدت أيضًا هذه التقنية هنا). وبهذه الطريقة ، لا يتم استدعاء ProcessRequest إلا مرة واحدة سواء تم العثور على الملف أم لا. لكن مشكلتي هي أن وظيفة onloaderror تعمل فقط عندما أعطيها عنوان URL سيئًا. إذا أعطيته عنوان URL جيدًا يمرر اسم ملف سيئ إلى المعالج ، فإن المعالج يلقي خطأً ، لكن يبدو أن وظيفة Onloaderror الخاصة بي لا تدرك أن هناك مشكلة - أحصل فقط على منطقة فارغة يجب أن تظهر فيها رسالة الخطأ فوق.

إليك رمز AS2 ذي الصلة:

function CheckFileExists(inFile) {

    var mclListener:Object = new Object();
    mclListener.onLoadError = function(target_mc:MovieClip, err:String){
         if(err=="URLNotFound")
         {
             target_mc.createTextField("error_txt", 1, 0, 0, 100, 20);
             target_mc.error_txt.autoSize = "left";
             target_mc.error_txt.text = "URL not found: \n\t" + target_mc._url;
         }
         else //I would expect this block to handle the error, since the URL is good.
         {
             target_mc.createTextField("error_txt", 1, 0, 0, 100, 20);
             target_mc.error_txt.autoSize = "left";
             target_mc.error_txt.text = "some other problem: \n\t" + target_mc._url;
         }
    }

    var mcl:MovieClipLoader = new MovieClipLoader();
    mcl.addListener(mclListener);
    var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
    mcl.loadClip(inFile, mc);
}

القليل من المساعدة؟

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

المحلول

كيف يتم رمي وظيفة الخادم الخاصة بك؟ تأكد من إرجاع رمز خطأ HTTP الفعلي مثل 404 أو 503 أو شيء من هذا القبيل. إذا كانت إرجاع رمز حالة HTTP 200 مع خطأ كرسالة نصية ، فلا يعرف Flash أن هذا خطأ. إنه يرى فقط الحالة 200 ويعتقد أن الحمل جيد ، ويحاول تحميل البيانات كفيلم فلاش.

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