سؤال

لنفترض أن لديك اختبار flexunit الذي يبدو كما يلي:

package foo {
    import flexunit.framework.TestCase;
    import flash.utils.getDefinitionByName;
    import flash.utils.getQualifiedSuperclassName;
    class DescribeTypeTest {
      public function testDescribeInnerType():void {
        var currentInstance:ChildBar = new ChildBar();
        trace(getDefinitionByName(getQualifiedSuperclassName(currentInstance)));
      }
    }
}
class Bar{}
class ChildBar extends Bar{}

مما يؤدي إلى الاستثناء "الخطأ رقم 1065:لم يتم تعريف شريط المتغير." إنه ينطبق فقط على الفئات الداخلية (الفئات خارج الحزمة).

هل لدى أي شخص أي طريقة للحصول على هذا العمل؟

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

المحلول

لست متأكدًا من وجود أي حل بديل، ولكن للتأكيد فقط:

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html#getDefinitionByName():

وظيفة getDefinitionByName ().
الوظيفة العامة getDefinitionByName (الاسم: سلسلة): إصدار لغة الكائن:Actionscript 3.0 إصدارات وقت التشغيل:Air 1.0 ، يقوم Flash Player 9 بإرجاع مرجع إلى كائن الفئة من الفئة المحددة بواسطة معلمة الاسم.

حدود

الاسم: سلسلة - اسم الفئة.إرجاع الكائن - إرجاع مرجع إلى كائن الفئة من الفئة المحددة بواسطة المعلمة الاسم.

رمي المرجع - لا يوجد تعريف عام مع الاسم المحدد.

نظرًا لأن كلاً من Bar وChildBar غير عامين، فإنك تحصل على ReferenceError.

نصائح أخرى

وأنا مجرد اختبار التعليمات البرمجية التالية مع فليكس 3.3 (التطبيق AIR):

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
    creationComplete="t();">
    <mx:Script>
        <![CDATA[
            import flash.utils.describeType;
            import flash.utils.getQualifiedSuperclassName;
            private function t():void {
                trace(getDefinitionByName(getQualifiedSuperclassName(new FooBar())));
            }
        ]]>
    </mx:Script>
</mx:WindowedApplication>

وBar.as

package
{
    public class Bar
    {
    }
}

وFooBar.as

package
{
    public class FooBar extends Bar
    {
        public function FooBar()
        {
            super();
        }        
    }
}

ونتيجة أثر أرى:

[SWF] DefTest.swf - 1,024,228 bytes after decompression
[class Bar]

هل يمكنكم تأكيد ذلك؟ هل هذا يساعد؟

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