سؤال

لقد انتهيت للتو من قراءة بعض وثائق COCOS2D ، وبقدر ما أفهم إضافة صورة خلفية إلى طبقة عليك أن تفعل شيئًا مثل:

Sprite * bg = [Sprite spriteWithFile:@"Background.png"];
[layer addChild:bg z:0];

على الرغم من أن الاختبار الخاص بي ، يمكنك فقط إضافة العفريت إلى المشهد مثل هذا:

@implementation IntroScene
- (id) init {
self = [super init];
if (self != nil) {
    Sprite * bg = [Sprite spriteWithFile:@"Background.png"];
    [bg setPosition:ccp(240, 160)];
    [self addChild:bg z:0];
    [self addChild:[MenuLayer node] z:1];
}
return self;

}

ما هو الفرق بين هذا الخيارين ، وما هي الطريقة الأفضل لوضع خلفية لطبقة؟. أي مساعدة سوف تكون محل تقدير كبير.

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

المحلول

لا تحتاج إلى وجود طبقة ، لكنها مفيدة. فكر في الطبقات كوسيلة لتجميع العفاريت (بصريًا وتنظيميًا). قد ترغب في تجميع صور الخلفية الخاصة بك كطبقة وجميع الأعداء في لعبة كطبقة أخرى. هذا يسمح لك بالتعامل مع كل مجموعة أكثر نظافة. على سبيل المثال ، يمكنك إزالة طبقة معينة بدلاً من العثور على جميع الأعداء وإزالتها.

إذا كان ذلك مفيدًا ، قم بتشغيل الطبقات في Photoshop أو برنامج تحرير الرسومات. الطبقات في COCOS2D تعمل بالمثل.

لمشهد بسيط ، فإن إضافة الخلفية إلى طبقة أو إلى مشهد لن يحدث فرقًا كبيرًا. لكن الأمر لا يستغرق وقتًا طويلاً قبل أن تبدأ فوائد الطبقات.

نصائح أخرى

أيضًا ترتيب رسم تحكم في الطبقات (علاوة على أي طلب Z بين الطبقة).

في GeoSpark ، على سبيل المثال ، لدي طبقة خلفية ، طبقة شرارة ، طبقة واجهة المستخدم ، إلخ (مبسطة). ولكن هذا يسمح لي بالتأكد من أن أشياء واجهة المستخدم الخاصة بي دائمًا فوق أي أشياء لعبة (طبقة الشرارة) وكل ما هو فوق الخلفية.

إذا لم تقدم لعبتك سوى عرض إضافي ، فلن يهم الطلب كثيرًا. قون

- ديفيد

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

في COCOS2D يمكننا إضافة أي عقدة على أي عقدة. لكنه يعتمد على مستوى التسلسل الهرمي.

يمكنك إضافة طبقات على المشاهد. إذا كنت تريد نفس الخاصية أو تبحث عن جميع الطبقات التي تضيفها على ccscene ، فيمكنك إضافة تلك الموجودة في CCSCENE (كما في حالتك الثانية). ولكن إذا كنت ترغب في الحصول على ميزة مختلفة على كل طبقة ، أضف تلك إلى cclayer.

Cclayer مخصص لتجميع مجموعة من العقد/العفاريت لبعض الأغراض. على سبيل المثال ، يمكنك إضافة طبقة تتضمن خيارات بعد إيقاف اللعبة ، أو طبقة HUD لعرض نوع Som دائمًا على الشاشة مع بعض طبقة التمرير (يشبه في بعض ألعاب منصات التمرير).

أخيرًا ، يمكنك حتى ccnode على ccscene ، طبقة على طبقة أخرى ، وحتى ccnode على ccsprite. لكن ترتيب الرسم في سياق الرسومات في COCOS2D يختلف.

أتمنى أن تحصل على الفرق.

حظا طيبا وفقك الله!

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