我正在尝试从另一个类中的我的播放器类调用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--;
}
}
}
}
答案 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 将(。那个错误意味着你错过了)。通常它可能意味着你在某处添加了一个额外的,因此关闭了一个你不想关闭的括号部分,这会在某处留下一个不成对的括号。