engumentError: خطأ #2025: يجب أن يكون DisplayObject المتوفر طفلًا لخطأ المتصل - كما
-
21-09-2019 - |
سؤال
لدي مقتطف الرمز هذا داخل وظيفة تتحقق إذا كان كائن موجود على خشبة المسرح ويزيله:
public function closeContent(e:MouseEvent):void {
removeChild(txt);
removeChild(ldr.content);
removeChild(_closeButton);
container_mc.visible = false;
statusText.text="";
if (contains(submitButton)) {
removeChild(submitButton);
}
if (contains(saveinfoButton)) {
removeChild(saveinfoButton);
}
}
حاولت التغيير stage
مع this
و root
لكن احصل دائمًا على هذا الخطأ ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller
المحلول
يشير الخطأ إلى أنك تحاول إزالة ملف DisplayObject
مع removeChild
يبدو أن هذا ليس طفلًا DisplayObjectContainer
يتم تنفيذ هذا الرمز من.
تتمثل إحدى طرق حل هذه المشكلة في التحقق مما إذا كان الكائن الذي تحاول إزالته هو في الواقع طفل للحاوية باستخدام contains
. أنت تفعل هذا لبعض الكائنات التي تقوم بإزالتها (submitButton
و saveinfoButton
) ، ولكن ليس لبعض الآخرين.
حاول لف removeChild
يتصل من أجل txt
, ldr.content
و _closeButton
في إذا كانت البيانات التي تستخدم contains
للتحقق مما إذا كانت هذه DisplayObject
S في الحاوية.
نصائح أخرى
محاولة مع:
e.currentTarget.parent.removeChild(txt);
e.currentTarget.parent.removeChild(ldr.content)
etc.
جرب هذا:
public function closeContent(e:MouseEvent):void {
removeChild(txt);
removeChild(ldr.content);
removeChild(_closeButton);
container_mc.visible = false;
statusText.text="";
if (contains(submitButton)) {
removeChild(submitButton);
removeChild(saveinfoButton);
}
}
قد تكون قادرًا على إضافة كلا العنصرين للإزالة في الشرطية مع &&:
if (contains(submitButton && saveinfoButton)) {