سؤال

وأنا أفعل لعبة فون باستخدام cocos2d التي تنطوي على مجموعة ضخمة من الرسوم المتحركة حرف (أتلست 25 مختلفة منها) .. التي أواجه الكثير من spritesheets تزن كل منها حوالي 100KB إلى 200KB .. واعتدت على إنشاء وAtlasSpriteManagers لهذه بناء على الطلب. ولكن عندما اختبرت هذه في الجهاز، كان هناك lotsa السقطات الأداء حول هذه الرسوم المتحركة .. كانت هناك إطارات في عداد المفقودين .. لعبة معلقة في حين أن الصور حيث التحميل وجميع ..

وهكذا قررت أن إنشاء ما قبل التحميل وتقنية التخزين المؤقت التي أتطلع دائما إلى الأمام وخلق AtlasSpriteManagers ممكن قد أحتاج والمحافظة عليها في NSMutableDictionary وأعتبر من هناك خلال الرسوم المتحركة .. وبناء على usageCount متغير، وسوف تزيل أجبرتها على الفرار في وقت لاحق هذا القاموس والذاكرة الحرة .. وانا استخدم الطريقة performSelectorInBackground استدعاء هذه الدالة "loadASM 'الذي يفعل ذلك إنشاء AtlasSpriteManager وتخزينها في القاموس.

[self performSelectorInBackground:@selector(loadASM:) withObject:fileName];

-(ASMHolder *)loadASM:(NSString *)fileName
{
AtlasSpriteManager *sprMgr = [AtlasSpriteManager spriteManagerWithFile:fileName capacity:40];
ASMHolder *asmHolder = [[ASMHolder alloc] init];
asmHolder.sprMgr = sprMgr; asmHolder.retainCount++;
[asmDict setObject:asmHolder forKey:fileName];

return asmHolder;
}

ولكن الصور لا يبدو أن تحميل إذا كنت استدعاء هذا الأسلوب في الخلفية باستخدام performSelectorInBackground .. يظهر مربع اللون الأبيض حيث من المفترض الصور لتظهر .. ومع ذلك، يتم إنشاء الكائن AtlasSpriteManager وهناك في القاموس .. ولكن هو مجرد تحول إلى العفاريت فارغة .. وبدلا من الدعوة الخلفية، إذا حاولت استدعاء الأسلوب "loadASM" مباشرة (أي [النفس loadASM: اسم الملف])، ويتم تحميل الصور .. ولكن بطبيعة الحال، هناك تأخير لأن هذا هو استدعاء متزامن ..

وأنا حتى التخزين المؤقت حاول Texture2D الكائنات أيضا بدلا من AtlasSpriteManagers، ولكن النتيجة واحدة ..

و(لقد حاولت أيضا addImageAsync من TextureManager .. ولكن أن لا تساعد هدفي جدا .. كما أنه لا يعطي اسم الملف الذي يتم تحميل في حجج طريقة الاستدعاء، والتي بدونها لا يمكن إنشاء مفتاح بلدي القاموس ذاكرة التخزين المؤقت .. )

الرجاء المساعدة ..

والشكر سانكار

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

المحلول

ما عليك القيام به أشياء خاصة لاستخدام برنامج OpenGL من المواضيع متعددة. انظر هذا السؤال .

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