AS3不接受构造 [英] AS3 not accepting constructor
问题描述
好吧,我提出这些问题,一千次,到目前为止,还没有的人能帮助我。我提出再因为我发现了一些新的东西。在过去,我一直没能为类对象创建的参数,每次当我这样做,我得到以下错误的时间
1136:不正确的参数个数。预计0。
我发现我的课是子类影片剪辑或雪碧能够有构造函数的参数,但是我的班是子类的子类都没有。没有任何理由的背后呢?
VAR云=新的云(5,4);
包com.objects {
进口对象类型:flash.events.Event;
进口flash.utils *。
公共类云扩展游戏对象{
公共变种MAXSPEED = 30;
公共变种minSpeed = 5;
公共变种cspeed:数= 0;
公共职能云(分:数= 0,最大值:数= 0):无效
{
VAR兰特= Math.ceil(的Math.random()* totalFrames);
gotoAndStop(RAND);
}
公共职能兰特(分:数量,最大值:编号):无效
{
MAXSPEED = MAX;
minSpeed =分钟;
cspeed =(Math.ceil(的Math.random()*ド)+ minSpeed);
}
重写公共职能updateObject():无效
{
eApi.setChildIndex(此,(eApi.numChildren - 1));
Y + = cspeed;
如果(Y> 800)
垃圾= TRUE;
}
}
}
下面是父类
包com.objects {
进口的flash.display.MovieClip;
进口的flash.display.Stage;
进口flash.events *。
进口flash.utils.getTimer;
公共类游戏对象扩展影片剪辑实现IgameObject
{
公共静态无功EG:发动机;
公共变种wPosX:数= 0;
公共变种wPosY:数= 0;
公共变种vPosX:数= 0;
公共变种vPosY:数= 0;
公共变种PX:数= 0;
公共变种PY:数= 0;
公共变种正确的:数= 0;
公共变种底部:数= 0;
公共变种左:数= 0;
公共变种顶:数= 0;
公共变种的centerX:数= 0;
公共变种centery:数= 0;
静态公共变种EAPI:EngineApi;
公共变种健康:数= 1;
公共变种maxHealth:数= 1;
保护VAR lastTime:数字;
公共变种TS:目标系统;
公共变种西:数字;
公共变种排:数字;
公共变种地图:数字;
公共变种死:布尔= FALSE;
公共变种垃圾:布尔= FALSE;
公共职能游戏物体():无效{
} //结束构造
静态公共职能addEngine(E:EngineApi):无效
{
EAPI = E;
}
公共职能updateObject():无效
{
}
公共职能攻击(导演:数= -40):无效
{
}
公共职能GarbageCollect():游戏对象
{
回到这一点;
}
公共职能的getTime():INT
{
VAR时间:INT =的getTimer();
返回时间;
}
}
}
这要通过的Flash IDE 到自定义类标志 >(影片剪辑,雪碧,..)谁在参数闪光的犯规知道如何实例化这样的类,它怎么能猜你期待的参数?
它只能实例化类不带任何参数,你必须依靠另一种方式以后初始化类,或提供一个默认的参数。
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.
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;
}
}
}
Here is the parent class
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;
}
}
}
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屋!