在舞台 AS3 上放置多个影片剪辑实例

Posted

技术标签:

【中文标题】在舞台 AS3 上放置多个影片剪辑实例【英文标题】:place several instances of a movieclip on stage AS3 【发布时间】:2014-01-04 15:27:21 【问题描述】:

我正在用 Flash AS3 制作第一人称射击游戏。我还在学习 AS3,需要帮助。我有一个电影剪辑“播放器”,一开始放在舞台上,它可以射击和移动很远,但我需要让玩家射击的敌人。

我创建了一个敌人,需要帮助获取同一影片剪辑(敌人)的多个实例,以便在舞台和影片中向“播放器”影片剪辑生成。我相信我需要创建一个数组以在任何一个时间点在该舞台上获得 2 个或更多相同的影片剪辑,但我完全不知道如何做到这一点。

提前致谢。

我的代码链接是Here (请注意 'Baddy.as' 我知道拼写错误,现在它已更改为 'Enemy.as')

【问题讨论】:

【参考方案1】:

一旦你有了 Enemy 类,你就可以创建它的多个实例并将它们存储在一个数组中。

var enemies:Array =  [];
var enemy:Enemy = new Enemy();
stage.addChild(enemy);
enemies.push(enemy);

然后你可以遍历敌人并使用enemies 数组移动它们。

for(var i=0; i<enemies.length; ++i)

    move(enemies[i]);

【讨论】:

这对舞台上的所有敌人在任何时候都有效吗?即所有敌人都在左侧,右侧,上方和下方?因为我认为让他们向播放器动画剪辑移动的唯一方法是获取播放器的位置并将其放入一个 var 中(并在每一帧循环,以便它不断具有正确的值),然后为敌人设置速度并使用 var 告诉它应该移动到哪里(不确定这是否需要循环)?而且我不确定我应该将它输入哪个类(主要或敌人)我猜主要但敌人类是空的。我对 actionscript 还是很陌生。 只要你把所有敌人都放在阵列中,它就会起作用。要将敌人移向玩家,您需要确定玩家相对于敌人的位置。 我只记得我的代码中已经有一个用于 'Bullet's 的数组.... ?我问是因为另一个数组在for loop 的条件下将i 作为变量,同时拥有i 会完全抛弃它,不是吗? 是的,i 是一个变量,不,因为i 在循环中被初始化为 0,所以它不会丢弃它。如果两个循环都在同一个范围内,您可以将var i 从循环中取出,并将i = 0 留在循环主体中。 好的,谢谢,我将这个循环中的 I var 更改为 b,它似乎运行良好。感谢您的帮助。

以上是关于在舞台 AS3 上放置多个影片剪辑实例的主要内容,如果未能解决你的问题,请参考以下文章

如何从 doc 类 AS3 定位舞台上的影片剪辑?

AS3:生成多个影片剪辑(随机位置)?

AS3 goToAndStop() 错误?

用flash as3语言如何将影片剪辑存入一个数组以及如何访问?

在 Actionscript 2 中立即引用影片剪辑类实例

如何使用 as3 同时访问所有影片剪辑(以及影片剪辑中的影片剪辑......)?