1120:未定义的属性的访问shuffledArray属性、未定义、shuffledArray

2023-09-08 15:06:07 作者:不过如此,补过如此。

请你帮我出我新的AS3,我试图创建使用费雪耶茨算法的一个洗牌的甲板。当我运行code使用Ctrl-输入没有错误编译,但是当我尝试将它输出与跟踪();它回来了:

场景1,图层'行动',第1帧,6号线1120:未定义的属性shuffledArray的访问

就像我说我是新来这个,这将是我做的事情非常愚蠢的,但都是一样的我是被卡住。

下面是code

 包src.CardDeck
{
    公共类CardDeck
    {
        公共变种allCards:数组= [];
        公共变种cardNames:阵列;
        公共变种cardValues​​:阵列;
        公共变种游戏类型:字符串;
        公共变种drawnCards:UINT = 0;

        公共职能CardDeck(游戏:字符串)
        {
            游戏类型=游戏;
            cardNames = [王牌,二,三,
                         四,五个一,六个一,
                         七,八,九,
                         十,杰克,皇后,王];
            如果(游戏类型==texasholdem)
            {
                cardValues​​ = [1,2,3,4,5,6,7,8,9,10,10,10,10]
            }
            makeSuit(铲);
            makeSuit(心);
            makeSuit(金刚);
            makeSuit(俱乐部);
        }
        功能makeSuit(suitString:字符串):无效
        {
            VAR卡:对象;

            对于(VAR我:UINT = 0; I< cardNames.length;我++)
            {
                卡= {};
                card.cardType = suitString;
                card.cardName = cardNames [I]
                card.cardValue = cardValues​​ [I]
                card.isDrawn = FALSE;
                allCards.push(卡);
            }
        }

        公共职能shuffleFisherYates():数组
        {
            VAR shuffledArray:数组= [];
            VAR randomCardIndex:INT;
            做
            {
                randomCardIndex = Math.floor(的Math.random()* allCards.length);
                shuffledArray.push(allCards [randomCardIndex]); //添加混合
                allCards.splice(randomCardIndex,1); //从甲板上删除
            }而(allCards.length); //含义而allCards.length!= 0
            返回shuffledArray;


        }
    }
}
 
ARCGIS API FOR flex中遇到 访问未定义的属性 layerInfos

和这里是.fla文件操作层

 进口src.CardDeck.CardDeck;

VAR甲板:CardDeck =新CardDeck(texasholdem);
跟踪(shuffledArray);
 

我知道它可能是一些愚蠢,但我挣扎。

在此先感谢!

解决方案

  VAR甲板:CardDeck =新CardDeck(texasholdem);
跟踪(shuffledArray);
 

这不起作用,因为 shuffledArray 未在此处定义。

尝试:

  VAR甲板:CardDeck =新CardDeck(texasholdem);
VAR数组:数组= deck.shuffleFisherYates();

对于(VAR我:= 0; I< array.length;我++)
{
    跟踪(数组[我] .cardName);
    跟踪(数组[我] .cardType);
    跟踪(数组[我] .cardValue);
    跟踪(数组[我] .isDrawn);
}
 

Please can you help me out I am new to as3 and I am trying to create a shuffled deck using the Fisher-Yates Algorithm. When I run the code with ctrl-enter it compiles with no errors but when I try to output it with trace(); it comes back with:

Scene 1, Layer 'actions', Frame 1, Line 6 1120: Access of undefined property shuffledArray.

Like I said I am new to this and it will be me doing something very stupid but all the same i'm stuck.

Here is the code

package src.CardDeck
{
    public class CardDeck
    {
        public var allCards:Array = [];
        public var cardNames:Array;
        public var cardValues:Array;
        public var gameType:String;
        public var drawnCards:uint = 0;

        public function CardDeck(game:String)
        {
            gameType = game;
            cardNames = ["Ace","Two","Three",
                         "Four","Five","Six",
                         "Seven","Eight","Nine",
                         "Ten","Jack","Queen","King"];
            if(gameType == "texasholdem")
            {
                cardValues = [1,2,3,4,5,6,7,8,9,10,10,10,10];
            }
            makeSuit("Spade");
            makeSuit("Heart");
            makeSuit("Diamond");
            makeSuit("Club");
        }
        function makeSuit(suitString:String):void
        {
            var card:Object;

            for(var i:uint = 0; i < cardNames.length; i++)
            {
                card = {};
                card.cardType = suitString;
                card.cardName = cardNames[i];
                card.cardValue = cardValues[i];
                card.isDrawn = false;
                allCards.push(card);
            }
        }

        public function shuffleFisherYates():Array 
        {
            var shuffledArray:Array = [];
            var randomCardIndex: int;
            do 
            {
                randomCardIndex = Math.floor(Math.random()* allCards.length);
                shuffledArray.push(allCards[randomCardIndex]); // add to mix
                allCards.splice(randomCardIndex,1); // remove from deck
            }while(allCards.length); // Meaning while allCards.length != 0
            return shuffledArray;


        }
    }
}

and here is the .fla actions layer

import src.CardDeck.CardDeck;

var deck:CardDeck = new CardDeck("texasholdem");
trace(shuffledArray);

I know its probably something silly but i'm struggling.

Thanks in advance!

Paul

解决方案

var deck:CardDeck = new CardDeck("texasholdem");
trace(shuffledArray);

This doesn't work because shuffledArray isn't defined there.

Try :

var deck:CardDeck = new CardDeck("texasholdem");
var array:Array = deck.shuffleFisherYates();

for(var i:int=0; i<array.length; i++)
{    
    trace(array[i].cardName);
    trace(array[i].cardType);
    trace(array[i].cardValue);
    trace(array[i].isDrawn);
}