AS3 - الطريقة الأكثر فعالية لتحديث الصورة النقطية

لدي هذه الوظيفة داخل الفئة التي تنشئ صورة نقطية لأي DisplayObject أقوم بالتمرير. كما سترى ، كل مرة أقوم بإنشاء صورة نقطية جديدة أقوم بإنشاء كائن BitmapData جديد و كائن صورة نقطية جديد.

هل هناك طريقة لتعديل هذه الوظيفة ، لذلك لم أعد مضطرًا لإعادة إنشاء هذين العنصرين في كل مرة أقوم فيها بتشغيل الوظيفة؟

private var bitmapData:BitmapData;
private var bm:Bitmap; 

crop(someSprite.width, someSprite.height, someSprite);

private function crop(_width:Number, _height:Number, displayObject:DisplayObject):void {

bitmapData.dispose();
bitmapData = new BitmapData( _width, _height, false, 0xFFFFFFFF );  
bitmapData.draw(displayObject);

bm = null;
bm = new Bitmap(bitmapData, PixelSnapping.ALWAYS, true);
bm.smoothing = true;
bm.alpha = 0;

}

شكر،

علامة

1

2 إجابة

إذا تغيرت أبعاد كائن العرض في كل مرة ، فسيتعين عليك إعادة إنشاء BitmapData </​​code> في كل مرة.

بالنسبة للكائنات Bitmap ، لن تحتاج إلى إعادة إنشائها. يمكنك ببساطة تعيين بيانات الصورة النقطية مباشرة:

bm.bitmapData = bitmapData;
2
وأضاف
حسنا، شكرا. على الأقل هذا أقل "جديدًا" أستخدمه.
وأضاف المؤلف crooksy88, مصدر

إذا كنت ترغب في تجنب إنشاء BitmapData جديد في كل مرة تقوم فيها بإنشاء BitmapData واحدة فقط في أكبر الأبعاد التي تتوقعها مرة واحدة وفي طريقة الاقتصاص ، فأنت تقوم أولاً بمسح تلك الخريطة باستخدام yourMap.fillRect (yourMap.rect، 0) ثم قم بإجراء السحب في الزاوية اليمنى العليا باستخدام مستطيل مقطع بأبعاد الاقتصاص. للحصول على تحسين أداء صغير إضافي ، يمكنك عندئذٍ تعيين خاصية ScrollRect الخاصة بكائن Bitmap الذي يعرضه للأبعاد التي تم اقتصاصها.

2
وأضاف
شكرا للمعلومة. أنا فقدت قليلا رغم ذلك. ما هو كائن yourMap وكيف يمكن أن ينطبق ذلك على المثال أعلاه؟
وأضاف المؤلف crooksy88, مصدر
قد تكون خريطة موقعك عبارة عن bitmapdata واحدة في أقصى الأبعاد المتوقعة التي تقوم بإنشائها مرة واحدة ثم تعيد استخدامها طوال الوقت. المشكلة الوحيدة هي أنك إذا كنت تستخدم طريقة crop() الخاصة بك أشبه بأداة مساعدة لـ bitmapdatas عامة ، فلن يعمل هذا الأسلوب ، إذا كان لديك مثيل واحد فقط من خريطتك ، فسيؤدي ذلك إلى تغيير طريقة العرض لجميع الصور النقطية التي تستخدمها كلما قمت بالاتصال ا & قتصاص.
وأضاف المؤلف Quasimondo, مصدر