يتم فقد الرسوم المتحركة من NSIMAGE بعد أرشفة ذلك مع NSKEYEDARCHIVER

StackOverflow https://stackoverflow.com/questions/2238872

سؤال

الوضع التالي:

لدي مثيل لي NSObject كائن منظرا. واحدة من عمرها هي NSImage. وبعد بعد إنهاء الكائن الذي أتحوله NSKeyedArchiver إلى البيانات، أرسلها عبر الشبكة، قم بتدويرها NSKeyedUnarchiver وعرض الصورة في NSImageView (setanimates: نعم). حتى هنا لا توجد مشاكل. يمكن عرض الصورة على الجهاز الآخر. الآن المشكلة:
إذا أرسلت GIF متحركة، فلن تحريك. لا أعرف لماذا ... أي أفكار لماذا يبقى الرسوم المتحركة بعيدا؟ شكرا لك!

تحديث

إذا قمت بفتح الصورة المتحركة قبل أرشفة ذلك NSImageView تحريكها. المشكلة ربما أرشفة ...

تحديث 2.

اختبرت سير العمل بأكمله دون إرسال البيانات عبر الشبكة، فقط أرشفة وتشغيلها مرة أخرى. كما اشتبهت أنها مشكلة مع أرشيف NSKEYED (UN).
يتم فقد الرسوم المتحركة. ولكن ماذا تفعل لمنع هذا؟

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

المحلول

أنا ببساطة أرشفة بيانات الصورة الأصلية، بدلا من مثيل الصورة.

نصائح أخرى

بشكل افتراضي، NSImage لا يحتفظ ببيانات الصورة المصدر الأصلية. ما الذي يحدث هو ذلك NSImage يقوم أرشفة الصورة النقطية الثابتة بإطار واحد فقط وتخلص من المحتوى الأصلي.

إذا اتصلت [yourNSImageObject setDataRetained:YES] ثم NSImage يجب تعليق البيانات الأصلية (في هذه الحالة، GIF المتحركة). أقترح عليك محاولة القيام بذلك عند إنشاء الصورة لأول مرة، ثم انظر ما يحدث عند أرشفة / إلغاء تأجيلها.

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