as3调用类到主fla

时间:2014-12-22 16:55:14

标签: actionscript-3 class flash

我试图在as3中调用一个类到我的主flash文件。

我的班级:

package
{
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.utils.Timer;
    import flash.events.TimerEvent;

    public class Snow extends MovieClip
    {
        private var flakesVector:Vector.<MovieClip> = new Vector.<MovieClip>();
        private var timer:Timer = new Timer(2000);

        public function Snow(speed:int = 3, flakesNumber = 100 ):void
        {
            for(var i:int = 0; i < flakesNumber; i++)
            {
                var flake:Snowflake = new Snowflake();

                flake.vel = (Math.random() * speed) + 0.5;
                flake.xSpeed = Math.floor(Math.random() * (0.5 - -0.5 + 1)) + -0.5;

                flake.scaleX = (Math.random() * 1) + 0.3;
                flake.scaleY = flake.scaleX;
                flake.x = Math.random() * stage.stageWidth;
                flake.y = Math.random() * stage.stageHeight;

                addChild(flake);

                flakesVector.push(flake);
            }

            addEventListener(Event.ENTER_FRAME, fall);
            timer.addEventListener(TimerEvent.TIMER, changeMovement);
            timer.start();
        }

        private function fall(e:Event):void
        {
            for(var i:int = 0; i < flakesVector.length; i++)
            {
                flakesVector[i].x += flakesVector[i].xSpeed;
                flakesVector[i].y += flakesVector[i].vel;

                if(flakesVector[i].y > stage.stageHeight)
                {
                    flakesVector[i].x = Math.random() * stage.stageWidth;
                    flakesVector[i].y = -flakesVector[i].height;
                }
            }
        }

        private function changeMovement(e:TimerEvent):void
        {
            for(var i:int = 0; i < flakesVector.length; i++)
            {
                flakesVector[i].xSpeed *= -1;
            }
        }

    }
}   

在我的主要内容中,我试着这样称呼它:

import classes.Snow;

var Snowy:Snow = new Snow();
addChild(Snowy);

但是当我尝试这样做时,如果我不给我的雪花动画片段提供任何实例名称,我得到&#34;无法访问空对象引用的属性或方法&#34;如果我将我的实例命名为雪花,我会收到错误&#34;找不到类型或者不是编译时常量:Snowflake&#34;

我做错了什么?

谢谢。

编辑:

但如果我把类文档称为Snow,我会遇到很多错误: 有什么建议吗?

enter image description here

2 个答案:

答案 0 :(得分:1)

你的班级在哪里?在你的fla文件旁边?

然后才使用:

var Snowy:Snow = new Snow();
addChild(Snowy); 

或在您的属性面板中

类别中的

:雪

enter image description here

编辑:您的代码正常

Working

答案 1 :(得分:0)

// import classes.Snow; // <---- REMOVE THIS

var Snowy:Snow;
var snowSW:Boolean=false;

button.addEventListener(MouesEvent.CLICK, switchSnow);

function switchSnow(e:MouseEvent):void{
    if(!snowSW){
       Snowy= new Snow();
       addChild(Snowy);
     }else{
       removeChild(Snowy);
       Snowy= null;
    }
}