我是as3的新手,我试图寻找我的问题的答案。对于侧滚动游戏,我在某些位置设置了敌人,我需要它们产生,而不仅仅是在游戏中的这些特定位置出现一次。这些是关于问题的时间线代码的摘录。
var enemyList:Array = new Array();
function addEnemiesToLevel1():void
{
addEnemy (700, 125);
addEnemy (1000, 125);
addEnemy(2405, 125);
addEnemy(3300, -155);
}
if (enemyList.length > 0)
{
for (var i:int = 0; i < enemyList.length; i++)
{
function addEnemy(xLocation:int, yLocation:int):void
{
var enemy:Enemy = new Enemy(xLocation, yLocation);
back.addChild(enemy);
enemy.addEventListener(Event.REMOVED, enemyRemoved);
enemyList.push(enemy);
}
敌人被绑在一个控制向玩家移动的类文件
package {
import flash.display.MovieClip;
import flash.events.Event;
public class Enemy extends MovieClip {
private var xSpeedConst:int = 6;
public function Enemy(xLocation:int, yLocation:int) {
// constructor code
x = xLocation;
y = yLocation;
addEventListener(Event.ENTER_FRAME, loop);
}
public function loop(e:Event):void {
x -= xSpeedConst;
}
public function removeSelf():void {
trace("remove enemy");
removeEventListener(Event.ENTER_FRAME, loop);
this.parent.removeChild(this);
}
}
}
敌人也会因为碰撞而设置,所以我不想过多地改变代码,因为我可能会破坏某些东西。如果我必须添加Timer,请告诉我到底在哪里,因为我已经尝试过并且失败了。谢谢您的帮助。
答案 0 :(得分:0)
虽然我建议不在时间轴中编码,但时间轴中的工作示例计时器设置如下所示:
var timer:Timer = new Timer(2000,0);
timer.addEventListener(TimerEvent.TIMER, createEnemy);
function createEnemy(e:TimerEvent):void{
//create a new enemy, pass the x and y you want (xPos and yPos here)
//var xPos:int, yPos:int
var enemy:Enemy = new Enemy( xPos, yPos );
back.addChild(enemy);
}
timer.start();
如果你在那里生成敌人,你也可以在你的类文件中进行类似的设置。同样,在时间线中执行此操作将更难以维护和调试。