gpt4 book ai didi

flash - AS3 游戏 - 如何从屏幕左右两侧生成敌人?

转载 作者:行者123 更新时间:2023-12-02 02:21:10 24 4
gpt4 key购买 nike

我的角色在屏幕中间生成,我不确定如何让僵尸从屏幕的左侧和右侧生成,并向中间移动。我的目标是让僵尸自动生成,中间的角色可以将它们击落。我刚刚开始研究 AS3,但我知道我需要制作一个数组来执行此操作,但不确定如何实现它。有人可以告诉我吗?谢谢。这是我的代码:

package 
{
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.ui.Keyboard;
public class ActualGame extends MovieClip
{
public var char:Character;
public var zombie:Zombieclass;
public var timer:Timer;
private var speed:Number = 4;
private var moveleft:Boolean = false;
private var moveright:Boolean = false;
private var i:Number =0;

public function ActualGame()
{
char = new Character();
stage.addChild(char);
zombie = new Zombieclass(0,360);
addChild(zombie);
timer = new Timer(25);
timer.addEventListener(TimerEvent.TIMER, zombie_spawn);
stage.addEventListener(Event.ENTER_FRAME, enterframe);
stage.addEventListener(KeyboardEvent.KEY_UP, keyup);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);
timer.start();
}

public function zombie_spawn(timerEvent:TimerEvent):void
{
zombie.zombie_move_right();
if (char.hitTestObject(zombie))
{
timer.stop();
trace("hit");
}
}
public function enterframe(event:Event)
{
if (moveleft)
{
char.x -= speed;
char.scaleX = -1;
}
else if (moveright)
{
char.x += speed;
char.scaleX = 1;
}
}
public function keydown(event:KeyboardEvent)
{
switch ( event.keyCode )
{
case Keyboard.LEFT :
moveleft = true;
break;
case Keyboard.RIGHT :
moveright = true;
break;
}
}
public function keyup(event:KeyboardEvent)
{
switch ( event.keyCode )
{
case Keyboard.LEFT :
moveleft = false;
break;
case Keyboard.RIGHT :
moveright = false;
break;
}
}
}
}

僵尸类:

package 
{
import flash.display.MovieClip;
public class Zombieclass extends MovieClip
{

public function Zombieclass(xcoord:Number, ycoord:Number)
{
x = xcoord;
y = ycoord;
}
public function zombie_move_right():void
{
x += 1.5;

}
public function zombie_move_left():void
{
x -= 1.5;
}
}

}

最佳答案

我理解你的问题,我自己也遇到过。当只是通过尝试、复制其他代码并修改它来学习编码并最终完成您的目标时,您可能会错过一些以后需要学习的基本要素。

数组有点像一叠纸。你可以把一张纸放进去,也可以拿出一张,或者你可以把整叠纸放在你的 table 上,然后一张一张地贴上邮票。这就是你想对你的僵尸做的。 (打个比方)。

您还需要学习循环的概念。使用循环,您可以使用很少的代码行来操作数组中的所有对象,即使您事先不知道数组中有多少项也是如此。

您需要执行以下操作:

  • 创建一个数组来存放僵尸。
  • 用僵尸填满你的阵列。
  • 每一帧循环检查你的僵尸,告诉它们移动。

像这样创建你的数组:public var zombies:Array = new Array();

添加一些僵尸:

var numberOfZombies:uint = 10;

for(var i:uint = 0; i<numberOfZombies; ++i) {
var zombie:ZombieClass = new ZombieClass(0, (360/numberOfZombies)*i);
addChild(zombie);

zombies.push( zombie );
}

这将创建 10 个僵尸,将它们放在屏幕上,并将它们添加到数组中。

然后,在每一帧上,您可以遍历数组并移动僵尸:

for(var i:uint = 0; i<numberOfZombies; ++i) {
var zombie:ZombieClass = zombies[i];

zombie.zombie_move_right();
}

或者什么的。这段代码可能包含一些错误,因为它没有经过测试而且我是在我的 iPad 上写的,但希望它能对你有所帮助。学习使用数组和循环。

祝你好运。

关于flash - AS3 游戏 - 如何从屏幕左右两侧生成敌人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8087144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com