使用Flash(AS3)创建吃豆人风格的游戏

使用Flash(AS3)创建吃豆人风格的游戏,flash,shared-objects,Flash,Shared Objects,使用Flash(AS3)创建一个吃豆人风格的游戏。有3个玩家竞相吃最多的圆点。现在,当一个玩家吃了一个点,在该玩家的屏幕上,这个点会消失(但只有一秒钟),并再次出现在屏幕上。另一个玩家在玩,没有看到圆点消失并重新出现 使用hitTestObject,当玩家触摸一个点时,该点将不再出现在舞台上。我正在使用共享对象创建这个多人游戏环境。我在使用SharedObject和AS3方面是新手 public function PlayerSelect()

使用Flash(AS3)创建一个吃豆人风格的游戏。有3个玩家竞相吃最多的圆点。现在,当一个玩家吃了一个点,在该玩家的屏幕上,这个点会消失(但只有一秒钟),并再次出现在屏幕上。另一个玩家在玩,没有看到圆点消失并重新出现

使用hitTestObject,当玩家触摸一个点时,该点将不再出现在舞台上。我正在使用共享对象创建这个多人游戏环境。我在使用SharedObject和AS3方面是新手

            public function PlayerSelect()
                    {           
                        nc = new NetConnection();
                        nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
                        nc.connect("rtmp://r92kq5ew6.rtmphost.com/g1");

                        select_screen.btn1.addEventListener(MouseEvent.MOUSE_UP, select1);
                        select_screen.btn2.addEventListener(MouseEvent.MOUSE_UP, select2);
                        select_screen.btn3.addEventListener(MouseEvent.MOUSE_UP, select3);
                        for(var i=0; i<circ_num; i++) {
                            circle_ary[i] = new Circle(); //linkage in the library
                            circle_ary[i].x=0;
                            circle_ary[i].y=0;
                            stage.addChild(circle_ary[i]);
                        }

                    }

         public function netStatusHandler(event:NetStatusEvent):void
                {
                    trace("connected is: " + nc.connected );
                    trace("event.info.level: " + event.info.level);
                    trace("event.info.code: " + event.info.code);

                    switch (event.info.code)
                    {
                        case "NetConnection.Connect.Success":
                            trace("Congratulations! you're connected");
                            so = SharedObject.getRemote("ballPosition", nc.uri, false);
                            so.connect(nc);
                            so.addEventListener(SyncEvent.SYNC, syncHandler);
                            break;
                        case "NetConnection.Connect.Rejected":
                        case "NetConnection.Connect.Failed":
                            trace ("Oops! you weren't able to connect");
                            break;
                    }

                }

    private function stageInit():void
            {
                for(var i=0; i<circ_num; i++) {
                    pos_ary[i] = new Array();
                    pos_ary[i][0] = Math.random()*stage.stageWidth;
                    pos_ary[i][1] = Math.random()*stage.stageHeight;

                    so.setProperty("dots", pos_ary);
                }


            }

// update clients when the shared object changes
        private function syncHandler(event:SyncEvent):void
        {
            // when a sync event is fired
            // update the information for all clients

            //here we update states for all players
            for (var i:String in so.data) //run through all players in the data array
            {

                if (i == "dots")
                {
                    for(var j=0; j<circ_num; j++)
                    {
                        circle_ary[j].x = so.data["dots"][j][0];
                        circle_ary[j].y = so.data["dots"][j][1];
                        //pos_ary[j][0] = so.data["dots"][j][0];
                        //pos_ary[j][i] = so.data["dots"][j][i];
                    }
                }

                else if(player_ary[i] == undefined)
                        makePlayer(i);  //if the player does not exist we create it

                else if (i!=me) //we do not need to update our selves from the server, just everyone else
                {   
                    player_ary[i].x = so.data[i][0]; //here I am treating data like a 2d array
                    player_ary[i].y = so.data[i][1]; //where [i][0] is x poition data and 
                }                                    //[i][1] is y position data
            }
        }

// function eatCircle --------------------------------------------------------------
function eatCircle():void {
    for (var j:int = 0; j<circ_num; j++)
    {
        if (player_ary[me].hitTestObject(circle_ary[j]))
        {
            trace ("I ate the circle");
            circle_ary[j].y = -100;
            pos_ary[j][1] =-100;
            so.setProperty("dots", pos_ary);
        }


    }

}
public function PlayerSelect()
{           
nc=新的网络连接();
nc.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
nc.连接(“rtmp://r92kq5ew6.rtmphost.com/g1");
选择screen.btn1.addEventListener(MouseEvent.MOUSE\u UP,选择1);
选择screen.btn2.addEventListener(MouseEvent.MOUSE\u UP,选择2);
选择screen.btn3.addEventListener(MouseEvent.MOUSE\u UP,选择3);

对于(var i=0;i是否所有玩家都试图将棋盘写入游戏状态。如果是这样,那么当一名玩家吃掉一个点并将地图写入游戏状态时,另一名玩家可能没有意识到游戏状态已经改变,并用地图覆盖地图。这将意味着吃掉的点将重新出现。

是另一名玩家没有看到吗它消失了?不是100%清楚这不是你的意图。只要重新阅读这个问题,可能就是这样?