ActionScript 3制作游戏模式

时间:2015-11-08 23:01:49

标签: actionscript-3 flash

我在吃某个物体时制作一个具有角色模式的游戏。有点像pacman,当你吃更大的球,让你变成蓝色,让你在短时间内吃鬼。

我的游戏有一种模式,当玩家吃某个物体时,他们可以在10秒钟内尝试吃掉他们的对手。当吃掉物体时,我已经能够躲闪地让玩家改变形态,从舞台上消失的物体,计时器开始和曾经吃掉其他玩家从舞台上移除和一些更多的互动(不擅长as3)。有些我怎么做的,所以玩家可以吃对象,然后打开模式,但不能吃他们的对手,它不会关闭或直接吃他们的对手,改变形式,打开计时器,但不要关闭它?

任何有关我做错的帮助都将不胜感激!代码

package  { 

import flash.display.MovieClip;
import flash.events.*;
import flash.utils.Timer;
import flash.events.TimerEvent;

public class main extends MovieClip 
{
    public var playerName:int;
    public var playerState:Number = 1;

    var player1;
    var player2;
    var theZombieBall;

    public var zombietimer:Timer = new Timer (1000,10);


    public function main() {
        // constructor code
        //defines player and zombie mode
        var playerNumber:int =1
        this.playerName = playerNumber;
        this.gotoAndStop(playerState);

        player1 = new player(50,384, 1);
        player2 = new player(944,384,2);

        stage.addChild(player1);
        stage.addChild(player2);

        stage.addEventListener(Event.ENTER_FRAME, checkForCollision);

        zombietimer.addEventListener(TimerEvent.TIMER,timerHandler);
    }

 public function timerHandler(event:TimerEvent):void
{
    timertext.text = 11- zombietimer.currentCount+"";

    if (zombietimer.currentCount <1){
        //player2.gotoAndStop (1);
            player1.playerState = 1;

            player1.gotoAndStop (2);
    }

}
    //public function addBall 
    public function checkForCollision(e:Event): void
    {           
        //this function checks to see if theZombieBall has collided with a player
        if(theZombieBall.hitTestObject(player1) || player1.hitTestObject(player2))
        {

            //removes thebadball from the stage
            trace("a player has eaten the zombie ball");
            stage.removeChild(theZombieBall);
            // change player to zombieplayer
            if (player1.playerState==1)
            {
            player1.playerState = 2;
            }
            else
            {
            player1.playerState = 1;
            }
            player1.gotoAndStop (2);

            //makes player larger
            player1.width =  player1.width *2;
            player1.height =  player1.height * 2;

            zombietimer.start();
        }

        //this function checks to see if theZombieBall has collided with a player
        if(theZombieBall.hitTestObject(player2)) 
        {

            //removes thebadball from the stage
            trace("a player has eaten the zombie ball");
            stage.removeChild(theZombieBall);
            // change player to zombieplayer
            if (player2.playerState==1)
            {
            player2.playerState = 2;
            }
            else
            {
            player2.playerState = 1;
            }
            player2.gotoAndStop (2);

            //makes player larger
            player2.width =  player2.width *2;
            player2.height =  player2.height * 2;

            zombietimer.start();
        }

        //this function checks to see if player in zombie mode has collided with a normal player
        if(player1.hitTestObject(player2)) 
        {

            //removes player1 from stage from the stage
            trace("a player has eaten another player");
            stage.removeChild(player1);
            // change player to normal player
            if (player2.playerState==2)
            {
            player2.playerState = 1;
            }
            else
            {
            player2.playerState = 2;
            }
            player2.gotoAndStop (1);

            //makes player larger
            player2.width =  player2.width *2;
            player2.height =  player2.height * 2;

            //removes timer from stage
            stage.removeChild(timertext);
        }

       }



     }


    }

1 个答案:

答案 0 :(得分:0)

当玩家1击中玩家2(或吃)时,你可能没有停止你的计时器。 当你停止计时器时,不要忘记重置定时器计数器等计时器项目。

如果

(player1.hitTestObject(player2))         {

        //removes player1 from stage from the stage
        trace("a player has eaten another player");
        stage.removeChild(player1);
        // change player to normal player
        if (player2.playerState==2)
        {
        player2.playerState = 1;
        }
        else
        {
        player2.playerState = 2;
        }
        player2.gotoAndStop (1);

        //makes player larger
        player2.width =  player2.width *2;
        player2.height =  player2.height * 2;

        //removes timer from stage
        stage.removeChild(timertext);
        zombietimer.start();
        ///also reset zombietimer items 


    }

希望这会有所帮助:)