1180:调用可能未定义的方法Punch

时间:2013-08-22 18:08:02

标签: actionscript-3

我正在尝试从另一个类中的我的播放器类调用punch函数但是由于某种原因它给了我这个错误:

1180: Call to a possibly undefined method Punch.

我不确定为什么它会给我这个错误。我甚至公开了这些功能。

这是我从以下地方打电话的课程:

package 
{
    public class Player extends MovieClip
    {
        public function Player()
        {
            stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown);
            stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyPressed);
            addEventListener(Event.ENTER_FRAME,Update);
        }


        function KeyPressed(event:KeyboardEvent):void
        {
            //If on floor
            if (CanJump)
            {
                //If A key is down
                if (event.keyCode == 65)
                {
                    //Punch
                    Punch(true);
                }
            }
        }


        function Update(event:Event)
        {
            //Do stuff
        }

    }
}

这就是我要打电话的地方:

package 
{

    public class ComboSequence extends ComboHandler
    {

        public function ComboSequence(clipName:String, par:BaseObject, _oList:ObjectList)
        {
            // constructor code
            super(clipName, par, _oList);

        }

        public function Punch(PunchKey:Boolean)
        {
            if (currentAttack != null)
            {
                if (Recovery <= 0 && FollowUpTime > 0)
                {
                    currentAttack = currentAttack.GetNextAttack(PunchKey);

                    if (currentAttack != null)
                    {
                        SetAnimation(currentAttack.animName);
                        Recovery = currentAttack.Recovery;
                        FollowUpTime = currentAttack.Recovery + 25;
                    }
                }
            }

            if (FollowUpTime > 0)
            {
                FollowUpTime--;
            }
            else
            {
                currentAttack = null;
            }

            if (Recovery > 0)
            {
                Recovery--;
            }
        }

    }

}

2 个答案:

答案 0 :(得分:0)

当您在播放器类中单独调用Punch()时,ActionScript正在寻找Player.Punch()方法。您的方法位于ComboSequence类。你可能试图做这样的事情:

var comboSequence:ComboSequence = new ComboSequence();
comboSequence.Punch()

请记住,虽然此代码将运行,但它可能无法执行您希望它执行的操作。我想你想在你的玩家对象中保留ComboSequence的实例。如果这对你没有意义,那么对ActionScript和面向对象的编程进行一些背景阅读是个好主意。

答案 1 :(得分:0)

您需要将 ComboSequence 导入播放器类并调用 Punch ,尽管如此 的 ComboSequence.Punch 即可。 andypaxo 在他的帖子中是正确的,你需要在播放器类中的某个地方实例化它。

关于您的代码的一个注意事项,您不应该使用大写字母命名函数。类名通常以大写字母开头,但不包括其中的方法。

package 
{
    import ComboSequence; //you may need the package path if its in a package, something like com.classes.ComboSequence, where com.classes is the folder that ComboSequence is saved.

    public class Player extends MovieClip
    {
        public function Player()
        {
            stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown);
            stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyPressed);
            addEventListener(Event.ENTER_FRAME,Update);
        }


        function KeyPressed(event:KeyboardEvent):void
        {
            //If on floor
            if (CanJump)
            {
                //If A key is down
                if (event.keyCode == 65)
                {
                    //Punch
                    ComboSequence.Punch(true);
                }
            }
        }


        function Update(event:Event)
        {
            //Do stuff
        }

    }
}

另外,关于您的“缺失的权利”错误, rightParen 表示右括号,或 leftParen 。那个错误意味着你错过了。通常它可能意味着你在某处添加了一个额外的,因此关闭了一个你不想关闭的括号部分,这会在某处留下一个不成对的括号。