Godot: التحكم :: has_point غير مدرج كطريقة افتراضية

تم إنشاؤها على ١٣ مارس ٢٠١٧  ·  3تعليقات  ·  مصدر: godotengine/godot

نظام التشغيل أو الجهاز - إصدار Godot:
Godot 2.1 / HEAD ، ولكن يبدو أن السيد قد تأثر إلى حد ما أيضًا

وصف المشكلة:
أثناء ترميز بعض الأشياء للعبة (غير البرمجيات الحرة والمفتوحة المصدر) ، قمت بتسمية إحدى طرقي على أنها has_point على نص برمجي متوارث CanvasItem تم تعيينه لبعض عناصر التحكم. لقد وصلت إلى return true ، حيث كان من المفترض أن يتم تجاوز ذلك بواسطة نصوص أخرى ... وبعد ذلك ، فجأة ، بدأت جميع عناصر التحكم في هذا النص في الحصول على جميع النقرات: يضحك:

قررت البحث في المستندات ، لأنني اشتبهت في حدوث شيء كهذا ، لكن Control::has_point لم يتم إدراجه ، لأنه غير ملزم على الإطلاق.

لاحظ أن تنفيذ has_point على scene/gui/control.cpp:572-588 يستدعي طريقة البرنامج النصي.

خطوات التكاثر:

  1. قم بعمل نص برمجي باستخدام:
extends Control
func has_point(point):
    return true
  1. قم بإضافته إلى عقدة زر
  2. يركض
  3. الربح (أو في الواقع ، البكاء)

رابط لمثال بسيط للمشروع: هنا في عجلة من أمرنا جزئيًا ، لذلك ، ربما لاحقًا عند الطلب.

كيفية الإصلاح:

  1. انتقل إلى scene/gui/control.cpp:2516
  2. أضف ماكرو BIND_VMETHOD مناسبًا ، مثل هنا: scene/main/node.cpp:2923
BIND_VMETHOD(MethodInfo("_process", PropertyInfo(Variant::REAL, "delta")));
  1. قم بالتجميع ، تأكد من أن قائمة المستندات Control::has_point(Vector2 point)
  2. جعل العلاقات العامة
bug documentation junior job

التعليق الأكثر فائدة

أود أن أجرب هذا كأول مساهمة لي.

ال 3 كومينتر

أود أن أجرب هذا كأول مساهمة لي.

قم أيضًا بإزالة bind_method العادي؟ (الملقب # 7960)

ولاكننى غير متأكد من ذلك

تحرير: يجب أن أتعلم القراءة. دوه.

تم الإصلاح بواسطة # 8023.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات