コード例 #1
0
        public override RunTimeValueBase execute(RunTimeValueBase thisObj,SLOT[] argements,object stackframe,out string errormessage,out int errorno)
        {
            errormessage = null;
            errorno      = 0;

            string name   = TypeConverter.ConvertToString(argements[0].getValue(),null,null);
            bool   isEnum = TypeConverter.ConvertToBoolean(argements[1].getValue(),null,null).value;

            if (string.IsNullOrEmpty(name))
            {
                return(ASBinCode.rtData.rtUndefined.undefined);
            }

            ASBinCode.rtData.rtObjectBase obj = (ASBinCode.rtData.rtObjectBase)thisObj;
            if (!(obj.value is ASBinCode.rtti.DynamicObject))
            {
                return(ASBinCode.rtData.rtUndefined.undefined);
            }

            ASBinCode.rtti.DynamicObject dobj = (ASBinCode.rtti.DynamicObject)obj.value;

            if (dobj is ASBinCode.rtti.DictionaryObject)
            {
                return(ASBinCode.rtData.rtUndefined.undefined);
            }

            if (dobj.hasproperty(name))
            {
                dobj.setPropertyIsEnumerable(name,isEnum);
            }
            return(ASBinCode.rtData.rtUndefined.undefined);
        }
コード例 #2
0
        public override RunTimeValueBase execute(RunTimeValueBase thisObj,SLOT[] argements,object stackframe,out string errormessage,out int errorno)
        {
            errormessage = null;
            errorno      = 0;

            string name = TypeConverter.ConvertToString(argements[0].getValue(),null,null);

            if (String.IsNullOrEmpty(name))
            {
                return(ASBinCode.rtData.rtBoolean.False);
            }

            //固定实例属性 — 对象类定义的非静态变量、常量或方法;
            //继承的固定实例属性 — 对象类继承的变量、常量或方法;
            //动态属性 — 对象实例化后添加到其中的属性(在其类定义之外)。要添加动态属性,必须用 dynamic 关键字声明对象的定义类。

            //return new ASBinCode.rtData.rtString(TypeConverter.ConvertToString(thisObj, null, null));

            ASBinCode.rtData.rtObjectBase obj = (ASBinCode.rtData.rtObjectBase)thisObj;

            if (ClassMemberFinder.find(obj.value._class,name,null) != null)
            {
                return(ASBinCode.rtData.rtBoolean.True);
            }

            if (obj.value is ASBinCode.rtti.DynamicObject)
            {
                ASBinCode.rtti.DynamicObject d = (ASBinCode.rtti.DynamicObject)obj.value;

                if (d.hasproperty(name))
                {
                    return(ASBinCode.rtData.rtBoolean.True);
                }
                else
                {
                    return(ASBinCode.rtData.rtBoolean.False);
                }
            }
            return(ASBinCode.rtData.rtBoolean.False);
        }
コード例 #3
0
        public override RunTimeValueBase execute(RunTimeValueBase thisObj,SLOT[] argements,object stackframe,out string errormessage,out int errorno)
        {
            errormessage = null;
            errorno      = 0;

            string name = TypeConverter.ConvertToString(argements[0].getValue(),null,null);

            if (string.IsNullOrEmpty(name))
            {
                return(ASBinCode.rtData.rtBoolean.False);
            }

            ASBinCode.rtData.rtObjectBase obj = (ASBinCode.rtData.rtObjectBase)thisObj;
            if (!(obj.value is ASBinCode.rtti.DynamicObject))
            {
                return(ASBinCode.rtData.rtBoolean.False);
            }

            ASBinCode.rtti.DynamicObject dobj = (ASBinCode.rtti.DynamicObject)obj.value;

            if (dobj.hasproperty(name))
            {
                if (dobj.propertyIsEnumerable(name))
                {
                    return(ASBinCode.rtData.rtBoolean.True);
                }
                else
                {
                    return(ASBinCode.rtData.rtBoolean.False);
                }
            }
            else
            {
                return(ASBinCode.rtData.rtBoolean.False);
            }
        }