2012-12-03 144 views
-1

我正在做闪光灯简单的格斗游戏,使用ActionScript 2(我知道AS3是更好的方式,但现在改变是不是一种选择,我的下一个项目将其他变量在as3我发誓)。使用字符串变量作为路径来访问AS 2

事情是这样的,我有一个“Player”对象,根据给定的参数,它被附加了一个名为“player1”或“player2”的movieclip。正确的实例名称存储在名为PlayerName的变量中。例如:

var character:Player = new Player(1); 

此代码将创建一个Player对象。由于数字“1”,构造函数会将PlayerName变量设置为字符串“player1”。最后,构造函数还应该将一个名为“player1”的影片剪辑附加到根目录。

我解决了附着影片剪辑的命名这样做:

_root.attachMovie(ID, this["PlayerName"], _root.getNextHighestDepth()); 

现在有类似的想法,我想解决以下问题(这是我的问题):说我想搬到我最近催生movieclip(或访问它的任何属性),我如何在MC的路径中使用字符串PlayerName?我的直觉是要做到这一点:

_root.PlayerName._x +=1; 

_root.(this["PlayerName"])._x +=1; 

希望当Flash制作,这种[“PlayerName”]会变成存储的字符串,但是这显然是行不通的。我真的坚持在这里,我用来做这一切在PHP的时候,我的意思是,如果这是PHP我会使用这样的:

_root.$PlayerName._x +=1; 

有什么建议?你如何做这项工作?安装时,它我能想到几个解决方法,即,存储于剪辑的引用:

clip = _root.attachMovie(.... 

然后通过夹访问它的属性(clip._x + = 1),但我感觉更舒适如果我知道如何在PHP中做到这一点使用的变量在路由一样..不是说我太在意,这只是在其他情况下,这种“夹”变通办法可能无法正常工作。

请记住,我有点新的动作脚本面向对象,哈哈,也许这完全是疯了,有人这样做了一些其他的方式。

感谢您的时间!

+0

嘿,我在AS2中存储的字符串,然后使用他们的文件路径,http://ffiles.com/flash/web_applications_and_data/download_manager_16slots_3567.html包括所有的源代码..基本上文本文件进行了下载管理器有一串路径,然后Flash会将这些路径读入变量以转到下载链接...浏览它应该被使用。 – joshua

回答

0

不需要使用“x”,因为这不是字符[NAME]它自己的位置。

_root.PlayerName._x +=1; //dont need the x value 

试着这么做:

 _root.PlayerName +"1"; //from memory should =: PlayerName1 

    trace("player"+1);// just type this as a test 
0

没关系,我发现如何做到这一点,还是要谢谢你。如果有其他人遇到同样的疑问,这是你如何做到这一点:

要告诉闪光,你将使用变量内的STRING作为路径,你需要使用方括号。现在,这个可以得到一个有点混乱,至少对我来说,东阳当你使用括号,你不应该使用一个点。你会想,如果变量被称为PlayerName,并且de MC的属性的路径是_root.PlayerName。_x,该语法为:

_root.[PlayerName]._x +=1; 

但是,这是错误的,不工作。至少这是我迄今为止收集到的。现在,为了使它工作,你需要摆脱第一个括号之前的点,在第二个之后它可以。不知道这是正确的,但它似乎工作,不妨一试:

_root[PlayerName]._x +=1; 

这并有效地工作,它访问名为“影片剪辑的_x属性什么 - 是 - 里面最PlayerName变量“并将其加1。我发现这个问题的原因是因为根后没有点,它看起来好像你是在访问根变量,就好像它是一个数组一样,并且这是没有意义的,因为PlayerName wasn不存储在根目录....无论如何,我不知道如何或为什么,但这似乎工作。希望能帮助到你。

0

_root[variableName]._x是一个路径中使用变量的正确方法。

相关问题