0

我有一个对象数组,每个对象在首次创建时都分配了一个 ID。我让用户能够在视觉上重新排序对象,这会改变它们在数组中的位置。然后他们可以选择使用 flash sharedObject 或“cookie”保存该订单,然后,如果他们重新打开 flash 文件,我希望他们能够点击一个按钮来恢复该订单。我只是不确定在数组中设置对象索引的语法是什么。这是我的代码:

变量:

var project_settings = SharedObject.getLocal("settings"); //saves all project settings for the next time the file is opened
var project_order:Array = []; //saves project order for the next time the file is opened
var project_display:Array = []; //saves whether each project should be displayed or hidden for the next time the file is opened

保存代码:

function saveOrder(){
    for (var i=0;i<project_array.length;i++){
        project_order[i] = project_array[i].id;
        project_display[i] = project_array[i].projectThumb.thumbActive;
    }
    project_settings.data.order = project_order;
    project_settings.data.active = project_display;
    //trace (project_settings.data.active[1]);
    project_settings.flush(); //saves most recent "cookie"
}

恢复代码:

function loadOrder(){
     for (var i=0;i<project_array.length;i++){
/* NEED THE CODE THAT GOES HERE. BASICALLY, PROJECT_ARRAY[i] SHOULD BE THE ITEM WITH AN ID EQUAL TO PROJECT_SETTINGS.DATA.ORDER[i] */
     }


}
4

2 回答 2

1

像这样的东西应该工作:

function loadOrder()
{
    var dict = new Dictionary();

    for (var i = 0; i < project_array.length; i++)
        dict[project_array[i].id] = project_array[i];

    project_array = [];

    for (var i = 0; i < project_settings.data.order.length; i++)
        project_array[i] = dict[project_settings.data.order[i]];
}
于 2011-03-23T21:52:42.727 回答
0

只需加载您的数组并按 ID 排序。像这样的东西应该工作:

private function _loadArray():void
{
    // fill in your array
    project_array.sort( this._sortFunc );
}

// replace the * by whatever your object type is
private function _sortFunc( a:*, b:* ):int
{
    return a.id - b.id;
}

更多信息:http ://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#sort ()

甚至该sortOn()功能(可能更容易)应该可以工作: http ://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#sortOn ()

于 2011-03-23T22:43:13.287 回答