Ошибка Flex4 1120 при доступе к методу - PullRequest
0 голосов
/ 28 марта 2011

Я бился головой о стену, пытаясь понять, в чем дело, но безуспешно.

Я получаю ошибку 1102: 1120: доступ к неопределенному свойству g. в следующем файле:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" title="Home">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            import ca.ss44.pabhi.Player;

            var g:Player = new Player();
            g.name( "name" );

        ]]>
    </fx:Script>
</s:View>

Мой класс игрока:

package ca.ss44.pabhi
{
    public class Player
    {
        private var _name:String; //Players name
        private var _cards:Array;

        public function Player()
        {
            //Sets up the current player, players be default have no cards.
            _cards = new Array();
        }

        /**
         * Retrn an array of all cards that the play currently holds.
         */
        public function getCards():Array{ return new Array(); }

        //Adds a card to the players
        public function addCard( card:Card ):void{

        }

        //Drop a card from the players hand.
        public function dropCard( card:Card ):void{

        }

        public function set name( value:String ):void{
            _name = value;
        }

        public function get name():String{
            return _name;
        }

    }
}

Любая помощь с тем, почему я получаю эту ошибку, будет очень признательна.

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Помимо проблемы с сеттером, ваш код размещен непосредственно в блоке скрипта.Это место для объявлений классов, а не последовательный код, как в фреймах.Вы должны поместить это в функцию, связанную с некоторым событием - например, initialize событие компонента:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" title="Home"
        initialize="init()">
<fx:Script>
        <![CDATA[
            private function init():void
            {
                import ca.ss44.pabhi.Player;
                var g:Player = new Player();
                g.name = "name";
            }
        ]]>
    </fx:Script>
1 голос
/ 28 марта 2011
g.name = "name";

функция установки не должна вызываться как функция.

...