Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays AS3 Can';t访问多维数组的子级_Arrays_Actionscript 3_Flash_Multidimensional Array - Fatal编程技术网

Arrays AS3 Can';t访问多维数组的子级

Arrays AS3 Can';t访问多维数组的子级,arrays,actionscript-3,flash,multidimensional-array,Arrays,Actionscript 3,Flash,Multidimensional Array,下面是创建多维tableCardsOfPlayers数组的代码示例,该数组的键具有座位名称,如(“firstSeat”、“secondSeat”等)。这些键应该包含一组“card1”=>Card()引用: var players:Array = lastJoinedRoom.userList; var cardsArray:Array = ["card1", "card2", "card3", "card4", "card5"]; tableCardsOfPlayers = new Array(

下面是创建多维tableCardsOfPlayers数组的代码示例,该数组的键具有座位名称,如(“firstSeat”、“secondSeat”等)。这些键应该包含一组“card1”=>Card()引用:

var players:Array = lastJoinedRoom.userList;
var cardsArray:Array = ["card1", "card2", "card3", "card4", "card5"];
tableCardsOfPlayers = new Array();
for each(var userTemp:User in players)
{
    var userVars:Array = userTemp.getVariables();
    var userVarDic:Array = new Array();
    var seat:String = userTemp.getVariable("seat").getStringValue();
    if(tableCardsOfPlayers[seat] == undefined) tableCardsOfPlayers[seat] = [];

    for each(var userVar:UserVariable in userVars)
    {
        if (cardsArray.indexOf(userVar.name) != -1)
        {
            tableCardsOfPlayers[seat][userVar.name] = new Card();
        }
    }

}   
但当我访问

 trace(tableCardsOfPlayers["firstSeat"]["card1"]);
AS3调试器引发异常

"TypeError: Error #1009: Cannot access a property or method of a null object reference."; 
我做错了什么?我在这里搜索了类似的问题,检查了每一行,一切似乎都很好

播放人员的表格卡片递归跟踪结果

--- secondSeat :    
------ card2 : [object Card]   
------ card4 : [object Card]   
------ card3 : [object Card]   
------ card5 : [object Card]   
------ card1 : [object Card]   
--- firstSeat :    
------ card2 : [object Card]   
------ card4 : [object Card]   
------ card3 : [object Card]   
------ card5 : [object Card]   
------ card1 : [object Card] 

递归跟踪函数:

public static function recursiveTrace (oObj:Object, sPrefix:String = ""):void  
    {  

        sPrefix == "" ? sPrefix = "---" : sPrefix += "---";  

        for (var i:* in oObj)  
        {  

            trace (sPrefix , i + " : " + oObj[i], "  ");  

            if (typeof( oObj[i] ) == "object") recursiveTrace ( oObj[i], sPrefix); // around we go again          
        }  

    }  

userTemp.getVariable(“seat”).getStringValue()返回什么?它返回seat名称,如“firstSeat”。您使用调试器尝试过吗?是的,调试器显示了这些键。但是当我跟踪整个TableCardsOfPlayer数组时,这些键的值不知何故是空的。。在递归跟踪中,需要如上所示的数组值。我编辑了我的问题,这是代码崩溃的那一行吗:TableCardsOfPlayer[seat][userVar.name]=“test”?