示例#1
0
        static int setMatrix(int L)
        {
            if (!LuaCommon.CheckAndShowArgsError(L, LConst.Table))
            {
                return(0);
            }

            Object tag     = (Object)Lua.Lua_touserdata(L, 1);
            bool   isTable = Lua.Lua_istable(L, -1);

            if (isTable && tag != null)
            {
                var fe = LuaTransition.GetRYTControlView(tag);
                CompositeTransform tranF = fe.RenderTransform as CompositeTransform;
                if (tranF == null)
                {
                    fe.RenderTransform = tranF = new CompositeTransform();
                }
                tranF.CenterX = fe.Width / 2;
                tranF.CenterY = fe.Height / 2;

                Matrix mValue = new Matrix();
                Dictionary <String, String> dic = new Dictionary <string, string>();
                Lua.Lua_pushnil(L);
                while (Lua.Lua_next(L, -2) != 0)
                {
                    String value = Lua.Lua_tostring(L, -1).ToString();
                    String key   = Lua.Lua_tostring(L, -2).ToString();
                    dic[key] = value;
                    Lua.Lua_pop(L, 1);

                    if (key.Equals("m11", StringComparison.CurrentCultureIgnoreCase))
                    {
                        mValue.M11   = double.Parse(value);
                        tranF.ScaleX = mValue.M11;
                    }
                    else if (key.Equals("m12", StringComparison.CurrentCultureIgnoreCase))
                    {
                        mValue.M12  = double.Parse(value);
                        tranF.SkewY = LuaManager.ConvertDegreesToRadians(Math.Atan(mValue.M12));
                    }
                    else if (key.Equals("m21", StringComparison.CurrentCultureIgnoreCase))
                    {
                        mValue.M21  = double.Parse(value);
                        tranF.SkewX = LuaManager.ConvertDegreesToRadians(Math.Atan(mValue.M21));
                    }
                    else if (key.Equals("m22", StringComparison.CurrentCultureIgnoreCase))
                    {
                        mValue.M22   = double.Parse(value);
                        tranF.ScaleY = mValue.M22;
                    }
                    else if (key.Equals("m31", StringComparison.CurrentCultureIgnoreCase))
                    {
                        mValue.OffsetX   = double.Parse(value);
                        tranF.TranslateX = mValue.OffsetX * LuaManager.WidthScale;
                    }
                    else if (key.Equals("m32", StringComparison.CurrentCultureIgnoreCase))
                    {
                        mValue.OffsetY   = double.Parse(value);
                        tranF.TranslateY = mValue.OffsetY * LuaManager.HeightScale;
                    }
                }

                MethodInfo methods = tag.GetType().GetMethod("SetMatrix");
                methods.Invoke(tag, new object[] { mValue });
            }

            return(0);
        }