Project1

标题: 如何将一个变量定义为数组? [打印本页]

作者: Zeldashu    时间: 2020-1-17 16:51
标题: 如何将一个变量定义为数组?
本帖最后由 Zeldashu 于 2020-1-17 17:32 编辑

或者说如何从数组里提取数值作为变量?又如何才能添加、加减乘除、移除数组的某项内容?

简而言之还是那个“变量不够用”的头痛问题,在翻查了一下js入门基础仍然无果后,突然发现了N年前的聊天记录有一张截图:

貌似能解决这个问题,可是实测之后发现了如下问题:

通过这种方法将变量定义为数组后,数组内容无法永久存储。比如变量1=[10,20,30],通过图中的方法读取变量1=$gameVariables.value(1)[2],可以获得变量1=30(通过显示文本来验证)。
之后再次显示文本发现变量1又变为0了。


而通过脚本
var x = New Aarry(
x[0] =10;
x[1] =20;
x[2] =30;


来制作数组似乎可以永久存储,但是我不知道怎么才能读取并且修改这些存储的数值并将它们代入到某个指定的变量之中。或者反过来。
希望有大佬能指点一二。





翻阅国外友人整理的Script Calls似乎发现了解决方法,虽然看不太懂,但是照着复制粘贴就能用,唯一缺陷(?)就是被做成数组的变量不能碰:



[size=14.6667px]// 将【变量1】设置为一个数字数组
[size=14.6667px]$gameVariables.setValue(1, [1, 2, 3]);

[size=14.6667px]// 访问变量1,索引第二个元素并将其设置为10
[size=14.6667px]$gameVariables.value(1)[1] = 10;

[size=14.6667px]// 打印变量1,也就是数组,它现在应该是[1,10,3]
[size=14.6667px]console.log($gameVariables.value(1))

[size=14.6667px]// 事件运用例子:
[size=14.6667px]Script:$gameVariables.setValue(20,  ["あ", "い", "う", "え", "お"]);
[size=14.6667px]:      :$gameVariables.setValue(19, $gameVariables.value(20)[1]);
[size=14.6667px]Text:None, Window, Bottom
[size=14.6667px]:    :\v[19]

[size=14.6667px]// 另一个由Caethyrill提供的例子:
[size=14.6667px]Control Variables:#0001 Array = ["あ", "い", "う", "え", "お"]
[size=14.6667px]Control Variables:#0002 First = $gameVariables.value(1)[0]
[size=14.6667px]Control Variables:#0003 Random = $gameVariables.value(1)[Math.randomInt(5)]
[size=14.6667px]Text:None, Window, Bottom
[size=14.6667px]:    :Array:  \v[1]
[size=14.6667px]:    :First:  \v[2]
[size=14.6667px]:    :Random: \v[3]


作者: fux2    时间: 2020-1-17 17:23
连续两次显示同一个变量,并且期间没操作过这个变量,值却发生了改变显然应该先检查是不是有脚本影响了他的值……
作者: 百里_飞柳    时间: 2020-1-17 17:43
我觉得是你想太复杂了

首先变量并不局限于只是数字
而后你可以取看看JS的基础教程中的数组
作者: wzj421301214    时间: 2020-1-17 17:59
本帖最后由 wzj421301214 于 2020-1-17 18:25 编辑

从数组里提取数值作为变量:
        var arr=[1,2,3,4,5,6,7];   //提取数值的目标数组
        var arr_temp;     //此项作为目的项用于存放取出的数组的值
        for(var i=0;i<arr.length;i++){    //遍历数组
                arrv_temp=arr;  //赋值
                console.log(arrv_temp);   //把取出的值打印在控制台上
        }

添加、移除数组的某项内容
        推荐使用splice方法,该方法会改变原始数组的值
                splice(index,len,[item]);
        其中: index代表数组开始下标, len代表替换/删除的长度, item代表替换的值,若删除操作,此项为空
                var arr=[1,2,3,4,5,6,7];
                arr.splice(2,0,"Mark1");        //在2和3之间填加字符串"Mark1"
                console.log(arr);        //输出 1,2,Mark1,3,4,5,6,7,此时数组内元素为:1,2,Mark1,3,4,5,6,7
                arr.splice(2,1,"Mark2");        //将2之后的1个元素替换成字符串"Mark2"
                console.log(arr);        //输出 1,2,Mark2,3,4,5,6,7,此时数组内元素为:1,2,Mark2,3,4,5,6,7
                arr.splice(2,1)        ////将2之后的1个元素删除
                console.log(arr);        //输出 1,2,3,4,5,6,7,此时数组内元素为:1,2,3,4,5,6,7

               
       

作者: yang1zhi    时间: 2020-1-17 21:23
// 将【变量1】设置为一个数字数组
$gameVariables.setValue(1, [1, 2, 3]);

这个是可以的。
一般就是这么设置的。
$gameVariables._data[10]
这个是默认的变量
也可以直接设置$gameVariables._data[10]
$gameVariables.value(10)是一个函数,输出10号变量的值,用来修改是不合适的。
这个输出的,如果是没定义的,会以0输出

被做成数组的变量变成了数组了。你自然不能使用默认的那个事件里的变量去操控他了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1