对于初学者:我正在使用Flash CS3和Actionscript 2.0
我正在尝试重拍蛙式游戏,而且我还是有点把车放在屏幕上。
对于那些不了解frogger的人:http://www.actionscript.org/showMovie.php?id=1157,但我没有实施日志。
最大的问题是我有3辆车,所有这些都是图书馆中的动画片段,我不会把它们放在舞台上。多个实例必须同时出现。这些车需要双向行驶,所有3辆车必须出现在所有车道上(我有4个车道) 当然,1车道只有1个方向。
我可以用hitTest()
看看我的青蛙是否撞到了其中一辆汽车,但我需要让它变得现实,这意味着我无法对每条车道上的汽车数量进行硬编码。
我似乎也无法找到如何围绕其中心旋转动画片......
答案 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;
}
}