我正在使用 actionscript 2 在 Flash 中制作一个简单的格斗游戏(我知道 as3 更好,但现在改变不是一种选择,我发誓我的下一个项目将在 as3 中)。
事情是这样的,我有一个“播放器”对象,它在实例化时附加一个名为“player1”或“player2”的影片剪辑,具体取决于给定的参数。正确的实例名称存储在名为 PlayerName 的变量中。例如:
var character:Player = new Player(1);
此代码将创建一个 Player 对象。由于数字“1”,构造函数会将 PlayerName 变量设置为字符串“player1”。最后,构造函数还应该将一个名为“player1”的影片剪辑附加到根目录。
我解决了附加电影剪辑的命名问题:
_root.attachMovie(ID, this["PlayerName"], _root.getNextHighestDepth());
现在有了类似的想法,我想解决以下问题(这是我的问题):假设我想移动我最近生成的电影剪辑(或访问它的任何属性),我如何在路径中使用字符串 PlayerName 到主持人?我的直觉是这样做:
_root.PlayerName._x +=1;
或者
_root.(this["PlayerName"])._x +=1;
希望当 flash 编译时,this["PlayerName"] 会变成存储的字符串,但这显然不起作用。我真的被困在这里,我以前一直在 PHP 中这样做,我的意思是,如果这是 PHP,我会使用这个:
_root.$PlayerName._x +=1;
有什么建议么?你怎么能做到这一点?我可以想到一些解决方法,即在附加剪辑时存储对剪辑的引用:
clip = _root.attachMovie(....
然后通过剪辑(clip._x +=1)访问它的属性,但如果我知道如何使用路径中的变量(如 PHP 中的变量)来做到这一点,我会感觉更舒服。不是我太在意,只是在其他情况下,此“剪辑”解决方法可能不起作用。
请记住,我对动作脚本中的 OOP 有点陌生,哈哈,也许这完全是疯狂的,人们会以其他方式这样做。
感谢您的时间!