AS3不接受构造 [英] AS3 not accepting constructor

查看:126
本文介绍了AS3不接受构造的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好吧,我提出这些问题,一千次,到目前为止,还没有的人能帮助我。我提出再因为我发现了一些新的东西。在过去,我一直没能为类对象创建的参数,每次当我这样做,我得到以下错误的时间

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆