سؤال

أنا أعمل مع تطبيق كتاب رقمي. أقوم باستخدام SWF Loader لتحميل صفحات SWF التي تم إنشاؤها من PDF. يمكنني استخدام TextSnapsot لرسم تسليط الضوء على النص المضمنة على الصفحات. يتم الاحتفاظ باستئام الضوء جيدا على الصفحات المعنية طوال الدورة ويمكن تحديثه / حذفه دون أي مشكلة. كان كل شيء يعمل بشكل رائع حتى اتخذت التغييرات التالية في نهج تحميل SWF لتمكين التخزين المؤقت للصفحة:

أنا الآن تحميل كائن SWF Loader في ذاكرة التطبيق وبينما فعل القفز من صفحة واحدة إلى صفحة أخرى، أنا فقط نسخ محتوى الصفحة التالية إلى محمل SWF الحالي الذي يقع على الشاشة للمستخدم. هناك مجموعتان من لوادر SWF - واحدة لعرض الصفحة وغيرها لذاكرة التخزين المؤقت للصفحة (الصفحات) التالية / السابقة. على الجانب التخزين المؤقت، أقوم بتحميل SWF في ذاكرة التطبيق وبعد الحصول عليها تحميلها، يمكنني اختيار جميع محتويات صفحة SWF المحملة (أطفال مقطع الفيلم) في مجموعة صفيف. أثناء تغيير الصفحة التي أقوم بنسخ المحتوى المخزن مؤقتا في مقطع فيلم SWF Loader الذي يعرض الصفحة.

الآن عندما أبلغت الصفحة الموجودة في الصفحة الموجودة في الصفحة على الشاشة والتنقل / إيابا من الصفحة والعودة مرة أخرى إلى الصفحة التي قمت فيها بتسلط الضوء عليها: يظهر تسليط الضوء الذي فعلته. ولكن بمجرد محاولة رسم تمييز آخر على تلك الصفحة، يختفي الضوء السابق على الفور من الصفحة.

أشك في أن الكائن TextSnapShot الذي يستمد تسليط الضوء على تسليط الضوء أثناء التنقل (إلى صفحة العرض المستهدف) يختلف عن تلك التي تم إعادة رسمها / تحديث تسليط الضوء على نفس الصفحة في المرة القادمة. على الرغم من أن معرف كائن TextSnapshot لكل من الكائنات هو نفسه.

هنا هي بعض القصاصات التعليمات البرمجية:

لنسخ المحتوى من كائن Loader SWF مؤقتا في ذاكرة التطبيق: giveacodicetagpre.

لنسخ المحتوى إلى محمل SWF الذي يعرض الصفحة: giveacodicetagpre.

بعد ذلك، قمت بإرسال محمل SWF بالكامل يدويا وفي معالج هذا الحدث وأخذ كائن Snap Type Snap. (Highlightmanager.as)

التعليمات البرمجية التي أستخدمها لرسم تسليط الضوء يدويا (باستخدام الماوس اسحب على الصفحة). giveacodicetagpre.

التعليمات البرمجية التي أستخدمها لإعادة رسم إبراز مسبقا عندما أعود إلى الصفحة: giveacodicetagpre.

نتطلع إلى دعمكم لحل هذه المشكلة.

التحيات،

js

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

المحلول

What you're doing is not 'caching', it's preloading previous/next pages. Also, what you're doing is really bad practice. I'm not even sure why you're casting these things into MovieClips unless the SWFs are that; if they're Flex SWFs, they'll be UIComponents. I would recommend you rethink your approach. I wouldn't even bother copying the children or anything over. Once the browser loads a SWF, it is now part of the browser cache, meaning the next time it's requested, it won't actually download it.

If you want to 'cache' your SWFs for a quicker next/previous page flipping, I would recommend you use something like SWFLoader to just load the other SWFs without actually adding it to the display, then removing it from memory. That will cache the SWFs for you in the browser. Then when the user click previous/next, just change the url of the main swfloader of the currently displayed page and it will load it up really quickly. No downloading since it's already cached, it will just need to instantiate.

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