push() public static method

public static push ( Lua L, LWF obj, bool gc, Lua metatable = null ) : void
L Lua
obj LWF
gc bool
metatable Lua
return void
コード例 #1
0
ファイル: lwf_lua.cs プロジェクト: xubingyue/lwf
        public void CallFunctionLua(string function, Movie movie)
        {
            if (luaState == null)
            {
                return;
            }

            Lua.lua_State l = (Lua.lua_State)luaState;
            Lua.lua_getglobal(l, "LWF");
            /* -1: LWF */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                return;
            }
            Lua.lua_getfield(l, -1, "Script");
            /* -2: LWF */
            /* -1: LWF.Script */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Script */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                return;
            }
            Lua.lua_getfield(l, -1, name);
            /* -2: LWF.Script */
            /* -1: LWF.Script.<name> */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Script.<name> */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                return;
            }
            Lua.lua_getfield(l, -1, function);
            /* -2: LWF.Script.<name> */
            /* -1: LWF.Script.<name>.<function> */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Script.<name>.<function> */
            if (!Lua.lua_isfunction(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                return;
            }
            Luna_LWF_Movie.push(l, movie, false);
            /* -2: LWF.Script.<name>.<function> */
            /* -1: LWF_Movie instance */
            if (Lua.lua_pcall(l, 1, 0, 0) != 0)
            {
                Lua.lua_pop(l, 1);
            }
            /* 0 */
        }
コード例 #2
0
 public static int _bind_getParent(Lua.lua_State L)
 {
     if (Lua.lua_gettop(L) != 1 || Luna.get_uniqueid(L, 1) !=
         LunaTraits_LWF_Button.uniqueID)
     {
         Luna.printStack(L);
         Lua.luaL_error(L, "luna typecheck failed: LWF.Button.parent");
     }
     LWF.Button a = Luna_LWF_Button.check(L, 1);
     Luna_LWF_Movie.push(L, a.parent, false);
     return(1);
 }
コード例 #3
0
    public static int _bind_getRootMovie(Lua.lua_State L)
    {
        if (Lua.lua_gettop(L) != 1 ||
            Luna.get_uniqueid(L, 1) != LunaTraits_LWF_LWF.uniqueID)
        {
            Luna.printStack(L);
            Lua.luaL_error(L, "luna typecheck failed: LWF.LWF.rootMovie");
        }

        LWF.LWF a = Luna_LWF_LWF.check(L, 1);
        Luna_LWF_Movie.push(L, a.rootMovie, false);
        return(1);
    }
コード例 #4
0
    public static int __index(Lua.lua_State L)
    {
        if (Lua.lua_gettop(L) == 2 && Luna.get_uniqueid(L, 1) ==
            LunaTraits_LWF_Movie.uniqueID)
        {
            LWF.Movie o =
                Luna_LWF_Movie.check(L, 1);
            string name = Lua.lua_tostring(L, 2).ToString();
            if (o.lwf.GetFieldLua(o, name))
            {
                return(1);
            }
            LWF.Movie movie = o.SearchMovieInstance(name, false);
            if (movie != null)
            {
                Lua.lua_pop(L, 1);
                Luna_LWF_Movie.push(L, movie, false);
                return(1);
            }
            LWF.Button button = o.SearchButtonInstance(name, false);
            if (button != null)
            {
                Lua.lua_pop(L, 1);
                Luna_LWF_Button.push(L, button, false);
                return(1);
            }
        }


        {
            Lua.lua_CFunction fnc = null;
            if (LunaTraits_LWF_Movie.properties.TryGetValue(Lua.lua_tostring(L, 2).ToString(), out fnc))
            {
                Lua.lua_pop(L, 1);                // remove self
                return(fnc(L));
            }
        }

        int mt = Lua.lua_getmetatable(L, 1);

        if (mt == 0)
        {
            Lua.luaL_error(L, "__index");             //end
        }
        Lua.lua_pushstring(L, Lua.lua_tostring(L, 2));
        Lua.lua_rawget(L, -2);
        return(1);
    }
コード例 #5
0
ファイル: lwf_lua.cs プロジェクト: xubingyue/lwf
        public int AddMovieEventHandlerLua()
        {
            if (luaState == null)
            {
                return(0);
            }

            Lua.lua_State l = (Lua.lua_State)luaState;
            string        instanceName;
            MovieEventHandlerDictionary handlers = new MovieEventHandlerDictionary()
            {
                { "load", null },
                { "postLoad", null },
                { "unload", null },
                { "enterFrame", null },
                { "update", null },
                { "render", null }
            };

            int handlerId;

            /* 1: LWF_LWF instance */
            /* 2: instanceName:string */
            /* 3: table {key:string, handler:function} */
            instanceName = Lua.lua_tostring(l, 2).ToString();

            Lua.lua_getglobal(l, "LWF");
            /* -1: LWF */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                goto error;
            }
            Lua.lua_getfield(l, -1, "Instances");
            /* -2: LWF */
            /* -1: LWF.Instances */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Instances */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                goto error;
            }
            Lua.lua_getfield(l, -1, instanceIdString);
            /* -2: LWF.Instances */
            /* -1: LWF.Instances.<instanceId> */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Instances.<instanceId> */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                goto error;
            }
            Lua.lua_getfield(l, -1, "Handlers");
            /* -2: LWF.Instances.<instanceId> */
            /* -1: LWF.Instances.<instanceId>.Handlers */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Instances.<instanceId>.Handlers */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                goto error;
            }

            Lua.lua_pushnil(l);
            /* -2: LWF.Instances.<instanceId>.Handlers */
            /* -1: nil */
            while (Lua.lua_next(l, 3) != 0)
            {
                /* -3: LWF.Instances.<instanceId>.Handlers */
                /* -2: key: eventName string */
                /* -1: value: handler function */
                string key = Lua.lua_tostring(l, -2).ToString();
                if (key != null && Lua.lua_isfunction(l, -1))
                {
                    int luaHandlerId = GetEventOffset();
                    handlers[key] = (Movie a) => {
                        if (!a.lwf.PushHandlerLua(luaHandlerId))
                        {
                            return;
                        }

                        /* -1: function */
                        Lua.lua_State ls = (Lua.lua_State)a.lwf.luaState;
                        Luna_LWF_Movie.push(ls, a, false);
                        /* -2: function */
                        /* -1: Movie or Button */
                        if (Lua.lua_pcall(ls, 1, 0, 0) != 0)
                        {
                            Lua.lua_pop(ls, 1);
                        }
                        /* 0 */
                    };
                    Lua.lua_setfield(l, -3, luaHandlerId.ToString());
                    /* LWF.Instances.<instanceId>.Handlers.<luaHandlerId> = function */
                    /* -2: LWF.Instances.<instanceId>.Handlers */
                    /* -1: key */
                }
                else
                {
                    Lua.lua_pop(l, 1);
                    /* -2: LWF.Instances.<instanceId>.Handlers */
                    /* -1: key: eventName string */
                }
            }
            /* -1: LWF.Instances.<instanceId>.Handlers */
            Lua.lua_pop(l, 1);
            /* 0 */

            handlerId = AddMovieEventHandler(instanceName,
                                             handlers["load"], handlers["postLoad"],
                                             handlers["unload"], handlers["enterFrame"],
                                             handlers["update"], handlers["render"]);
            Lua.lua_pushnumber(l, handlerId);
            /* handlerId */
            return(1);

error:
            Lua.lua_pushnumber(l, -1);
            /* -1: -1 */
            return(1);
        }
コード例 #6
0
ファイル: lwf_lua.cs プロジェクト: xubingyue/lwf
        public int AddEventHandlerLua(Movie movie = null, Button button = null)
        {
            if (luaState == null)
            {
                return(0);
            }

            Lua.lua_State l = (Lua.lua_State)luaState;
            string        ev;
            int           luaHandlerId;
            int           handlerId;

            /* 1: LWF_LWF instance */
            /* 2: string */
            /* 3: function */
            ev = Lua.lua_tostring(l, 2).ToString();

            Lua.lua_getglobal(l, "LWF");
            /* -1: LWF */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                goto error;
            }
            Lua.lua_getfield(l, -1, "Instances");
            /* -2: LWF */
            /* -1: LWF.Instances */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Instances */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                goto error;
            }
            Lua.lua_getfield(l, -1, instanceIdString);
            /* -2: LWF.Instances */
            /* -1: LWF.Instances.<instanceId> */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Instances.<instanceId> */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                goto error;
            }
            Lua.lua_getfield(l, -1, "Handlers");
            /* -2: LWF.Instances.<instanceId> */
            /* -1: LWF.Instances.<instanceId>.Handlers */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Instances.<instanceId>.Handlers */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                goto error;
            }
            Lua.lua_pushvalue(l, 3);
            /* -2: LWF.Instances.<instanceId>.Handlers */
            /* -1: function */
            luaHandlerId = GetEventOffset();
            Lua.lua_setfield(l, -2, luaHandlerId.ToString());
            /* LWF.Instances.<instanceId>.Handlers.<luaHandlerId> = function */
            /* -1: LWF.Instances.<instanceId>.Handlers */
            Lua.lua_pop(l, 1);
            /* 0 */

            if (movie != null)
            {
                if (string.IsNullOrEmpty(ev) || MovieEvents.ContainsKey(ev))
                {
                    /* Movie event */
                    handlerId = movie.AddEventHandler(ev, (Movie m) => {
                        Lua.lua_State _l = (Lua.lua_State)m.lwf.luaState;
                        if (!m.lwf.PushHandlerLua(luaHandlerId))
                        {
                            return;
                        }
                        /* -1: function */

                        Luna_LWF_Movie.push(_l, m, false);
                        /* -2: function */
                        /* -1: Movie */
                        if (Lua.lua_pcall(_l, 1, 0, 0) != 0)
                        {
                            Lua.lua_pop(_l, 1);
                        }
                    });
                }
                else
                {
                    handlerId = movie.AddEventHandler(ev, () => {
                        Lua.lua_State _l = (Lua.lua_State)movie.lwf.luaState;
                        if (!movie.lwf.PushHandlerLua(luaHandlerId))
                        {
                            return;
                        }
                        /* -1: function */

                        /* User defined event */
                        Lua.lua_createtable(_l, 0, 2);
                        /* -2: function */
                        /* -1: table */
                        Lua.lua_pushstring(_l, ev);
                        /* -3: function */
                        /* -2: table */
                        /* -1: string(type) */
                        Lua.lua_setfield(_l, -2, "type");
                        /* -2: function */
                        /* -1: table */
                        if (Lua.lua_istable(_l, 2))
                        {
                            Lua.lua_getfield(_l, 2, "param");
                            /* -3: function */
                            /* -2: table */
                            /* -1: param */
                        }
                        else
                        {
                            Lua.lua_pushnil(_l);
                            /* -3: function */
                            /* -2: table */
                            /* -1: nil */
                        }
                        Lua.lua_setfield(_l, -2, "param");
                        /* -2: function */
                        /* -1: table */
                        if (Lua.lua_pcall(_l, 1, 0, 0) != 0)
                        {
                            Lua.lua_pop(_l, 1);
                        }
                        /* 0 */
                    });
                }
            }
            else if (button != null)
            {
                if (string.Compare(ev, "keyPress") == 0)
                {
                    handlerId = button.AddEventHandler(ev, (Button b, int k) => {
                        if (!b.lwf.PushHandlerLua(luaHandlerId))
                        {
                            return;
                        }

                        /* -1: function */
                        Lua.lua_State _l = (Lua.lua_State)b.lwf.luaState;
                        Luna_LWF_Button.push(_l, b, false);
                        Lua.lua_pushnumber(_l, k);
                        /* -3: function */
                        /* -2: Button */
                        /* -1: int */
                        if (Lua.lua_pcall(l, 2, 0, 0) != 0)
                        {
                            Lua.lua_pop(l, 1);
                        }
                        /* 0 */
                    });
                }
                else
                {
                    handlerId = button.AddEventHandler(ev, (Button b) => {
                        if (!b.lwf.PushHandlerLua(luaHandlerId))
                        {
                            return;
                        }

                        /* -1: function */
                        Lua.lua_State _l = (Lua.lua_State)b.lwf.luaState;
                        Luna_LWF_Button.push(_l, b, false);
                        /* -2: function */
                        /* -1: Button */
                        if (Lua.lua_pcall(l, 1, 0, 0) != 0)
                        {
                            Lua.lua_pop(l, 1);
                        }
                        /* 0 */
                    });
                }
            }
            else
            {
                handlerId = AddEventHandler(ev, (Movie m, Button b) => {
                    if (!m.lwf.PushHandlerLua(luaHandlerId))
                    {
                        return;
                    }

                    /* -1: function */
                    Lua.lua_State _l = (Lua.lua_State)m.lwf.luaState;
                    Luna_LWF_Movie.push(_l, m, false);
                    Luna_LWF_Button.push(_l, b, false);
                    /* -3: function */
                    /* -2: Movie */
                    /* -1: Button */
                    if (Lua.lua_pcall(l, 2, 0, 0) != 0)
                    {
                        Lua.lua_pop(l, 1);
                    }
                    /* 0 */
                });
            }

            Lua.lua_pushnumber(l, handlerId);
            /* -1: handlerId */
            return(1);

error:
            Lua.lua_pushnumber(l, -1);
            /* -1: -1 */
            return(1);
        }
コード例 #7
0
ファイル: lwf_lua.cs プロジェクト: xubingyue/lwf
        public void CallEventFunctionLua(int eventId, Movie movie, Button button)
        {
            if (luaState == null)
            {
                return;
            }

            if (!m_eventFunctions.ContainsKey(eventId))
            {
                return;
            }

            Lua.lua_State l = (Lua.lua_State)luaState;
            Lua.lua_getglobal(l, "LWF");
            /* -1: LWF */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                return;
            }
            Lua.lua_getfield(l, -1, "Script");
            /* -2: LWF */
            /* -1: LWF.Script */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Script */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                return;
            }
            Lua.lua_getfield(l, -1, name);
            /* -2: LWF.Script */
            /* -1: LWF.Script.<name> */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Script.<name> */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                return;
            }
            string ev = "Event_";

            Lua.lua_getfield(l, -1,
                             (ev + data.strings[data.events[eventId].stringId]));
            /* -2: LWF.Script.<name> */
            /* -1: LWF.Script.<name>.Event_<eventName> */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Script.<name>.Event_<eventName>*/

            if (!Lua.lua_isfunction(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                return;
            }
            Luna_LWF_Movie.push(l, movie, false);
            /* -2: LWF.Script.<name>.Event_<eventName> */
            /* -1: LWF_Movie instance */
            Luna_LWF_Button.push(l, button, false);
            /* -3: LWF.Script.<name>.Event_<eventName> */
            /* -2: LWF_Movie instance */
            /* -1: LWF_Button instance */
            if (Lua.lua_pcall(l, 2, 0, 0) != 0)
            {
                Lua.lua_pop(l, 1);
            }
            /* 0 */
        }
コード例 #8
0
ファイル: lwf_lua.cs プロジェクト: xubingyue/lwf
        public int AttachMovieLua(Movie movie, bool empty)
        {
            if (luaState == null)
            {
                return(0);
            }

            Lua.lua_State l    = (Lua.lua_State)luaState;
            int           args = Lua.lua_gettop(l);
            string        linkageName;
            string        attachName;
            int           attachDepth            = -1;
            bool          reorder                = false;
            int           offset                 = empty ? 2 : 3;
            MovieEventHandlerDictionary handlers =
                new MovieEventHandlerDictionary()
            {
                { "load", null },
                { "postLoad", null },
                { "unload", null },
                { "enterFrame", null },
                { "update", null },
                { "render", null }
            };

            Movie child;

            /* 1: LWF_Movie instance */
            /* 2: linkageName:string */
            /* 3: attachName:string */
            /* 4: table {key:string, handler:function} */
            /* 5: attachDepth:number (option) */
            /* 6: reorder:boolean (option) */
            /* or */
            /* 1: LWF_Movie instance */
            /* 2: attachName:string */
            /* 3: table {key:string, handler:function} */
            /* 4: attachDepth:number (option) */
            /* 5: reorder:boolean (option) */
            linkageName = empty ? "_empty" : Lua.lua_tostring(l, 2).ToString();
            attachName  = Lua.lua_tostring(l, offset).ToString();
            if (args >= offset + 1)
            {
                Lua.lua_getglobal(l, "LWF");
                /* -1: LWF */
                if (!Lua.lua_istable(l, -1))
                {
                    Lua.lua_pop(l, 1);
                    /* 0 */
                    goto error;
                }
                Lua.lua_getfield(l, -1, "Instances");
                /* -2: LWF */
                /* -1: LWF.Instances */
                Lua.lua_remove(l, -2);
                /* -1: LWF.Instances */
                if (!Lua.lua_istable(l, -1))
                {
                    Lua.lua_pop(l, 1);
                    /* 0 */
                    goto error;
                }
                Lua.lua_getfield(l, -1, instanceIdString);
                /* -2: LWF.Instances */
                /* -1: LWF.Instances.<instanceId> */
                Lua.lua_remove(l, -2);
                /* -1: LWF.Instances.<instanceId> */
                if (!Lua.lua_istable(l, -1))
                {
                    Lua.lua_pop(l, 1);
                    /* 0 */
                    goto error;
                }
                Lua.lua_getfield(l, -1, "Handlers");
                /* -2: LWF.Instances.<instanceId> */
                /* -1: LWF.Instances.<instanceId>.Handlers */
                Lua.lua_remove(l, -2);
                /* -1: LWF.Instances.<instanceId>.Handlers */
                if (!Lua.lua_istable(l, -1))
                {
                    Lua.lua_pop(l, 1);
                    /* 0 */
                    goto error;
                }

                Lua.lua_pushnil(l);
                /* -2: LWF.Instances.<instanceId>.Handlers */
                /* -1: nil */
                while (Lua.lua_next(l, 4) != 0)
                {
                    /* -3: LWF.Instances.<instanceId>.Handlers */
                    /* -2: key: eventName string */
                    /* -1: value: handler function */
                    string key = Lua.lua_tostring(l, -2).ToString();
                    if (key != null && Lua.lua_isfunction(l, -1))
                    {
                        int luaHandlerId = GetEventOffset();
                        handlers[key] = (Movie a) => {
                            if (!a.lwf.PushHandlerLua(luaHandlerId))
                            {
                                return;
                            }

                            /* -1: function */
                            Lua.lua_State ls = (Lua.lua_State)a.lwf.luaState;
                            Luna_LWF_Movie.push(ls, a, false);
                            /* -2: function */
                            /* -1: Movie or Button */
                            if (Lua.lua_pcall(ls, 1, 0, 0) != 0)
                            {
                                Lua.lua_pop(ls, 1);
                            }
                            /* 0 */
                        };


                        Lua.lua_setfield(l, -3, luaHandlerId.ToString());

                        /* LWF.Instances.<instanceId>.Handlers.
                         *      <luaHandlerId> = function */
                        /* -2: LWF.Instances.<instanceId>.Handlers */
                        /* -1: key */
                    }
                    else
                    {
                        Lua.lua_pop(l, 1);
                        /* -2: LWF.Instances.<instanceId>.Handlers */
                        /* -1: key: eventName string */
                    }
                }
                /* -1: LWF.Instances.<instanceId>.Handlers */
                Lua.lua_pop(l, 1);
                /* 0 */
            }
            if (args >= offset + 2)
            {
                attachDepth = (int)Lua.lua_tonumber(l, offset + 2);
            }
            if (args >= offset + 3)
            {
                reorder = Lua.lua_toboolean(l, offset + 3) != 0;
            }

            child = movie.AttachMovie(
                linkageName,
                attachName,
                attachDepth,
                reorder,
                handlers["load"],
                handlers["postLoad"],
                handlers["unload"],
                handlers["enterFrame"],
                handlers["update"],
                handlers["render"]);
            Luna_LWF_Movie.push(l, child, false);
            /* -1: LWF_Movie child */
            return(1);

error:
            Lua.lua_pushnil(l);
            /* -1: nil */
            return(1);
        }
コード例 #9
0
        public int AddEventHandlerLua()
        {
            if (luaState == null)
            {
                return(0);
            }

            Lua.lua_State l = (Lua.lua_State)luaState;
            string        ev;
            int           luaHandlerId;
            int           handlerId;

            /* 1: LWF_LWF instance */
            /* 2: string */
            /* 3: function */
            ev = Lua.lua_tostring(l, 2).ToString();

            Lua.lua_getglobal(l, "LWF");
            /* -1: LWF */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                goto error;
            }
            Lua.lua_getfield(l, -1, "Instances");
            /* -2: LWF */
            /* -1: LWF.Instances */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Instances */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                goto error;
            }
            Lua.lua_getfield(l, -1, instanceIdString);
            /* -2: LWF.Instances */
            /* -1: LWF.Instances.<instanceId> */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Instances.<instanceId> */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                goto error;
            }
            Lua.lua_getfield(l, -1, "Handlers");
            /* -2: LWF.Instances.<instanceId> */
            /* -1: LWF.Instances.<instanceId>.Handlers */
            Lua.lua_remove(l, -2);
            /* -1: LWF.Instances.<instanceId>.Handlers */
            if (!Lua.lua_istable(l, -1))
            {
                Lua.lua_pop(l, 1);
                /* 0 */
                goto error;
            }
            Lua.lua_pushvalue(l, 3);
            /* -2: LWF.Instances.<instanceId>.Handlers */
            /* -1: function */
            luaHandlerId = GetEventOffset();
            Lua.lua_setfield(l, -2, luaHandlerId.ToString());
            /* LWF.Instances.<instanceId>.Handlers.<luaHandlerId> = function */
            /* -1: LWF.Instances.<instanceId>.Handlers */
            Lua.lua_pop(l, 1);
            /* 0 */

            handlerId = AddEventHandler(ev, (Movie m, Button b) => {
                if (!m.lwf.PushHandlerLua(luaHandlerId))
                {
                    return;
                }

                /* -1: function */
                Lua.lua_State _l = (Lua.lua_State)m.lwf.luaState;
                Luna_LWF_Movie.push(_l, m, false);
                Luna_LWF_Button.push(_l, b, false);
                /* -3: function */
                /* -2: Movie */
                /* -1: Button */
                if (Lua.lua_pcall(l, 2, 0, 0) != 0)
                {
                    Lua.lua_pop(l, 1);
                }
                /* 0 */
            });
            Lua.lua_pushnumber(l, handlerId);
            /* -1: handlerId */
            return(1);

error:
            Lua.lua_pushnumber(l, -1);
            /* -1: -1 */
            return(1);
        }