AS3 不接受构造函数 [英] AS3 not accepting constructor
问题描述
好的,我已经提出过一千次这些问题,但到目前为止没有人能够帮助我.我再次加注是因为我发现了一些新东西.过去我无法为类对象创建参数,每次这样做时都会出现以下错误
Ok, I have raise these question a thousand times and so far no ones been able to help me. I am raising again because I discovered something new. In the past I haven't been able to create parameters for class objects, every time when I do so I get the following error
1136: Incorrect number of arguments. Expected 0.
我注意到作为 Movie Clip 或 Sprite 的子类的类能够具有构造函数参数,但是作为子类的子类的类不能.这背后有什么原因吗?
I notice that my classes that are subclasses to Movie Clip or Sprite are able to have constructor parameters, but my classes that are sub class to a subclass aren't. is there any reason behind this?
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;
}
}
}
推荐答案
您正在通过 Flash IDE 将 符号 附加到自定义类> (MovieClip, Sprite,..)谁拿参数flash不知道怎么实例化这样的类,它怎么猜到你期望的参数?
It you are attaching a symbol via Flash IDE to a custom class (MovieClip, Sprite,..) who is taking parameter flash doesnt know how to instanciate such a class, how can it guess the parameter you are expecting ?
它只能实例化没有参数的类,你必须依靠另一种方式来初始化你的类或提供一个默认参数.
It can only instanciate class with no arguments, you have to rely on another way to init your class later or provide a default parameter.
这篇关于AS3 不接受构造函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!