好的,我已经提出了这个问题一千次,到目前为止还没有人能够帮助我。我再次提高,因为我发现了一些新东西。在过去,我无法为类对象创建参数,每次我这样做时都会出现以下错误
1136: Incorrect number of arguments. Expected 0.
我注意到我作为Movie Clip或Sprite的子类的类能够有构造函数参数,但是作为子类的子类的类不是。这背后有什么理由吗?
var cloud = new Cloud(5, 4);
package com.objects{
import flash.events.Event;
import flash.utils.*;
public class Cloud extends gameObject {
public var maxSpeed = 30;
public var minSpeed = 5;
public var cspeed:Number = 0;
public function Cloud(min:Number = 0, max:Number = 0):void
{
var rand = Math.ceil(Math.random() * totalFrames);
gotoAndStop(rand);
}
public function rand(min:Number, max:Number):void
{
maxSpeed = max;
minSpeed = min;
cspeed = (Math.ceil(Math.random() * maxSpeed)+ minSpeed);
}
override public function updateObject():void
{
eApi.setChildIndex(this, (eApi.numChildren - 1));
y += cspeed;
if(y > 800)
garbage = true;
}
}
}
这是父类
package com.objects {
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.*;
import flash.utils.getTimer;
public class gameObject extends MovieClip implements IgameObject
{
public static var EG:Engine;
public var wPosX:Number = 0;
public var wPosY:Number = 0;
public var vPosX:Number = 0;
public var vPosY:Number = 0;
public var px:Number = 0;
public var py:Number = 0;
public var right:Number = 0;
public var bottom:Number = 0;
public var left:Number = 0;
public var top:Number = 0;
public var centerx:Number = 0;
public var centery:Number = 0;
static public var eApi:EngineApi;
public var health:Number = 1;
public var maxHealth:Number = 1;
protected var lastTime:Number;
public var ts:TargetSystem;
public var col:Number;
public var row:Number;
public var map:Number;
public var dead:Boolean = false;
public var garbage:Boolean = false;
public function gameObject():void {
}//End Constructor
static public function addEngine(e:EngineApi):void
{
eApi = e;
}
public function updateObject():void
{
}
public function Attack(dir:Number = -40):void
{
}
public function GarbageCollect():gameObject
{
return this;
}
public function getTime():int
{
var time:int = getTimer();
return time;
}
}
}
答案 0 :(得分:3)
您正在通过 Flash IDE 将符号附加到正在执行参数闪光的自定义类(MovieClip,Sprite,..) 不知道如何实现这样的类,它怎么能猜出你期望的参数呢?
它只能实现没有参数的类,你必须依赖另一种方法来启动你的类或者提供一个默认参数。
答案 1 :(得分:2)
在没有看到任何代码的情况下,我只能提出一些模糊的说法,“计算机是否插上电源?” - 风格建议:
- 确保没有与您的子类同名的现有类。尝试在课程末尾添加一些废话(即“MyClassFl4134qq”)以检查是否存在冲突 - 如果更改使其有效,那就是你的问题。
- 确保您正在继承的课程未标记为“最终”。
- 确保对'super(...)'构造函数的任何调用都具有正确的超类参数数量,而不是子类的参数。
- 检查你的变量声明。确保您为该变量分配的任何对象的类型与您声明的类型匹配。
如果我不得不下注,我会说你可能有班级名称冲突(参见第1条建议)。
答案 2 :(得分:1)
您必须在子子类中实现构造函数。否则flash将替换为不带任何参数的空构造函数。