用flash实现frogger

时间:2009-05-04 14:15:48

标签: variables actionscript-2 flash-cs3

对于初学者:我正在使用Flash CS3和Actionscript 2.0

我正在尝试重拍蛙式游戏,而且我还是有点把车放在屏幕上。

对于那些不了解frogger的人:http://www.actionscript.org/showMovie.php?id=1157,但我没有实施日志。

最大的问题是我有3辆车,所有这些都是图书馆中的动画片段,我不会把它们放在舞台上。多个实例必须同时出现。这些车需要双向行驶,所有3辆车必须出现在所有车道上(我有4个车道) 当然,1车道只有1个方向。

我可以用hitTest()看看我的青蛙是否撞到了其中一辆汽车,但我需要让它变得现实,这意味着我无法对每条车道上的汽车数量进行硬编码。

我似乎也无法找到如何围绕其中心旋转动画片......

2 个答案:

答案 0 :(得分:2)

嗯,我可以提出一些建议。

对于汽车,将每辆汽车创建为库中的单独对象(不要将它们放在舞台上)。如果您需要在屏幕上显示一个,请使用attachMovie()创建您想要的汽车实例。

为了使它们面向不同的方向(我相信你只需要左右),你可以在图书馆中创建每个汽车的2个副本,一个面向每个方向。或者,我认为如果你将xScale值设置为-100%,我认为它会水平翻转它,所以你可以使用相同的Library实例。但是,如果每个方向都有单独的库实例,而不是在一个方向上进行旋转,则可能更容易处理。

答案 1 :(得分:1)

回答有关旋转的问题,影片剪辑围绕其注册点旋转,而不是围绕其视觉中心旋转。因此,在创建剪辑时,请确保符号编辑屏幕上的十字准线显示在中心。十字准线是注册点,它基本上定义了剪辑上x:0,y:0的位置。

听起来你的问题实际上是关于如何使用hitTest看看青蛙是否击中了任何一辆车,无论是哪一辆,有多少人在舞台上等等。所以我要做的就是创造一个班级汽车有一个静态成员,可以指向青蛙的指针,然后让班级检查它是否击中了青蛙。

首先:

public class Car extends MovieClip{     
    public static var frog:MovieClip;
    private var interval;
    public function Car(){
        super();
        interval = setInterval(checkHit,500);
    }
    private function checkHit(){
            if(this.hitTest(frog)){
            trace("the frog hit the car");
            clearInterval(interval);
            //do what you need to do when the frog gets hit 
        }
    }
}

对于每辆车,您可以延长Car类:

class Truck extends Car{
    public function Truck(){
        super();
    }
}

class Volkswagen extends Car{
    public function Volkswagen(){
        super();
    }
}

class Bus extends Car{
    public function Bus(){
        super();
    }
}

创建单个类后,在每个汽车的库符号上使用Linkage。 (右键单击符号,选择“链接”,然后在“类”字段中键入您的类名)。

最后,将青蛙成员放在舞台上的青蛙身上

var frog:MovieClip = attachMovie("frog_mc", frogMC, _root.getNextHighestDepth())
Car.frog = frog; //set the static var "frog" to your frog instance

现在你的车应该检查自己是否正在击中青蛙。

另一个选项是在每个不同的汽车动画片段的第一帧上编码checkHit()函数,而不是为每个动画片段使用类:

this.onEnterFrame = function(){
    if(this.hitTest(_root.frog)){
        trace("the frog hit the car");
        //do what you need to do when the frog gets hit 
        delete this.onEnterFrame;
    }
}