Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3数组中的变量不更新,即使直接给出;“命令”;_Actionscript 3_Variables_Air_Flash Cc - Fatal编程技术网

Actionscript 3 AS3数组中的变量不更新,即使直接给出;“命令”;

Actionscript 3 AS3数组中的变量不更新,即使直接给出;“命令”;,actionscript-3,variables,air,flash-cc,Actionscript 3,Variables,Air,Flash Cc,我希望你很好。 我有一个我不明白的问题。我的变量似乎在更新,但没有更新(我已经在下面的代码上下文中作了进一步解释)。 [我正在尝试创建一个商店,在那里我的用户可以为我的游戏购买老板] 我真的希望你能帮我:) 这是代码。请不要犹豫,向我询问更多细节(老板总数约为36人) var-bossBuyBtnArray:Array=[campagnesBuy.boss1,campagnesBuy.boss2]; //用MovieClips作为购买按钮的数组 var pbArray:Array=[campag

我希望你很好。 我有一个我不明白的问题。我的变量似乎在更新,但没有更新(我已经在下面的代码上下文中作了进一步解释)。 [我正在尝试创建一个商店,在那里我的用户可以为我的游戏购买老板]

我真的希望你能帮我:)

这是代码。请不要犹豫,向我询问更多细节(老板总数约为36人)

var-bossBuyBtnArray:Array=[campagnesBuy.boss1,campagnesBuy.boss2];
//用MovieClips作为购买按钮的数组
var pbArray:Array=[campagnesBuy.pb1,campagnesBuy.pb2]//带有MovieClips的数组,用于判断是否拥有boss
var-bossVar:Array=[sp[59],sp[60]//包含保存库存状态所需的int变量的数组
每个(var storeBtn:bossBuyBtnArray中的MOVICELIP)
storeBtn.addEventListener(MouseEvent.CLICK,fnBossStoreBtn)//当用户单击存储按钮时,
函数FNBOSSSSTOREBTN(e:事件):无效{
var listElementBoss:DisplayObject=e.target作为DisplayObject;//listElementBoss=Selected Boss。
var iBoss:int=bossBuyBtnArray.indexOf(listlementboss);//获取所选boss的索引
如果(iBoss<0){//检查所选boss是否在数组中
listElementBoss=e.currentTarget作为DisplayObject;
if(listelmentboss)iBoss=bossBuyBtnArray.indexOf(listelmentboss);
}
if(iBoss<0)返回;
if(pbArray[iBoss].currentFrame==1){//检查boss是否尚未拥有。
如果(sp[58]>999){//检查用户是否有足够的黄金。
/*不起作用的部分:*/
bossVar[iBoss]=1;//修改变量(sp[59]或sp[60])
//通常,如果选择了boss 1,它会更新变量,比如sp[59]。
//界面被fnAlreadyOwned修改(见下文),所以我猜有些东西被更新了,
//但是当我跟踪(sp[59])时,它显示为0,writeObject()函数保存了0
//当我重新加载游戏时,金币不见了,但boss再次被锁定。
/*其余的工作*/
sp[58]=sp[58]-1000;//从总黄金中减去boss的成本。
gameMode.pirateTxt.text=sp[58];//更新黄金“库存”
writeObject();//保存黄金和boss所有权的状态
fnAlreadyOwned(null);//更新接口
}否则{
trace(“不够黄金”);//如果不够黄金
}
}否则{
trace(“已经拥有”);//如果老板已经拥有。
}
}
执行此操作时:

var bossVar:Array=[sp[59], sp[60]]; //array with int variables needed to save the state of inventory
您从
sp
数组中获取变量,并将它们放入
bossVar
数组中。在这种情况下复制int变量

这意味着更改
sp[59]
bossVar[0]
不会更改另一个

示例代码:

var a:Array = [1, 2];
var b:Array = [a[0], 5];
a[0] = 42;
trace("a[0] =" + a[0]);
trace("b[0] =" + b[0]);

例如,您可以通过存储对象来避免这种情况。

该代码非常混乱。每个人都有自己的编码风格,但是一旦你和其他人分享了你的代码,就应该尽可能让人愉快地阅读和理解。添加评论的努力是非常值得赞赏的,但我想很多潜在的回答者都懒得读一遍。为了你自己的利益,试着写一些更干净的代码来吸引更多的人。很抱歉搞得一团糟,我还在学习AS3(以及一般的编码),所以我主要是在修修补补以使事情顺利进行;)我理解你的评论,下次我会尽我最大的努力。我补充说,我不知道我在创造“复制品”。很高兴知道!我会试试你的建议,然后回来告诉你结果。
var a:Array = [1, 2];
var b:Array = [a[0], 5];
a[0] = 42;
trace("a[0] =" + a[0]);
trace("b[0] =" + b[0]);