当前位置: 首页>>代码示例>>C#>>正文


C# ActionContext.MakeLocalScope方法代码示例

本文整理汇总了C#中ActionContext.MakeLocalScope方法的典型用法代码示例。如果您正苦于以下问题:C# ActionContext.MakeLocalScope方法的具体用法?C# ActionContext.MakeLocalScope怎么用?C# ActionContext.MakeLocalScope使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ActionContext的用法示例。


在下文中一共展示了ActionContext.MakeLocalScope方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Invoke

        public override ActionVar Invoke(ActionContext context, params ActionVar[] parameters)
        {
            var scope = context.This ?? context.GlobalScope;
            var newContext = context.MakeLocalScope(_registerCount, parameters.Length);
            var locals = newContext.Scope.Last.Value;

            int i, l = Math.Min(_parameters.Length, parameters.Length);
            for (i = 0; i < _parameters.Length; i++)
            {
                newContext.Stack.Push(parameters[i]);
                if (_parameters[i].Register > 0 && _parameters[i].Register < _registerCount)
                    newContext.Registers[_parameters[i].Register] = parameters[i];
                locals[_parameters[i].Name] = parameters[i];
            }

            for (; i < parameters.Length; i++)
                newContext.Stack.Push(parameters[i]);

            for (; i < _parameters.Length; i++)
            {
                if (_parameters[i].Register > 0 && _parameters[i].Register < _registerCount)
                    newContext.Registers[_parameters[i].Register] = new ActionVar();
                locals[_parameters[i].Name] = new ActionVar();
            }

            newContext.Stack.Push(parameters.Length);

            int preloadReg = 1;
            if ((_flags & FuncFlags.PreloadThis) != 0)
                newContext.Registers[preloadReg++] = scope;
            if ((_flags & FuncFlags.SupressThis) == 0)
                locals["this"] = scope;

            if ((_flags & FuncFlags.PreloadArguments) != 0)
                newContext.Registers[preloadReg++] = new Objects.Array(parameters);
            if ((_flags & FuncFlags.SupressArguments) == 0)
                locals["arguments"] = new Objects.Array(parameters);

            if ((_flags & FuncFlags.PreloadSuper) != 0)
                newContext.Registers[preloadReg++] = scope.Prototype;
            if ((_flags & FuncFlags.SupressSuper) == 0)
                locals["super"] = scope.Prototype;

            if ((_flags & FuncFlags.PreloadRoot) != 0)
                newContext.Registers[preloadReg++] = context.RootClip;
            if ((_flags & FuncFlags.PreloadParent) != 0)
                newContext.Registers[preloadReg++] = (scope is MovieClip) ? new ActionVar((scope as MovieClip).Parent) : new ActionVar((string)null);
            if ((_flags & FuncFlags.PreloadGlobal) != 0)
                newContext.Registers[preloadReg++] = context.GlobalScope;

            return _code.RunSafe(newContext);
        }
开发者ID:kaldap,项目名称:XnaFlash,代码行数:52,代码来源:RuntimeActionFunc.cs


注:本文中的ActionContext.MakeLocalScope方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。