Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 通过静态类型访问未定义的属性_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 通过静态类型访问未定义的属性

Actionscript 3 通过静态类型访问未定义的属性,actionscript-3,flash,Actionscript 3,Flash,我得到一个错误:通过静态类型为Gold的引用访问可能未定义的属性destinationY。我不使用黄金级的destinationY属性。只有在主课上。 我对类和定义对象本身的属性仍然是个业余爱好者。请帮忙。谢谢 以下是主要课程: package { import flash.display.MovieClip; import flash.display.Sprite; import flash.utils.Timer; import flash.event

我得到一个错误:通过静态类型为Gold的引用访问可能未定义的属性destinationY。我不使用黄金级的destinationY属性。只有在主课上。 我对类和定义对象本身的属性仍然是个业余爱好者。请帮忙。谢谢

以下是主要课程:

package
{   

    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.events.Event;
    public class Main extends MovieClip
    {
        private var field:Array;
        public var gold:Gold;
        public var goldContainer:Sprite = new Sprite();
        private var goldTimer:Timer = new Timer(2000);


        public function Main():void
        {
            setupField();

            goldSet();
            addEventListener(Event.ENTER_FRAME,onEnterFrm);
        }

        private function goldSet():void
        {   addChild(goldContainer);
            goldTimer.start();
            goldTimer.addEventListener(TimerEvent.TIMER, newGold);

        }

        private function newGold(e:TimerEvent):void {
            var goldRow:int=Math.floor(Math.random()*5);
            var goldCol:int=Math.floor(Math.random()*9);
            gold = new Gold(this);
            gold.buttonMode=true;
            goldContainer.addChild(gold);
            gold.x=30+goldCol*65;
            gold.destinationY = 35+goldRow*75;
            gold.y=-2


        }       


        private function onEnterFrm(e:Event):void {
            for (var i:uint=0; i<goldContainer.numChildren; i++) {
                var fallingGold:Gold=goldContainer.getChildAt(i) as Gold;
                if (fallingGold.y<fallingGold.destinationY) {
                    fallingGold.y++;
                } else {
                    fallingGold.alpha-=0.01;
                    if (fallingGold.alpha<0) {

                        goldContainer.removeChild(fallingGold);
                    }
                }
            }
        }
    }
}

乍一看,您的
Gold
类中没有
destinationY
属性
MovieClip
也没有此属性,因此您试图操作一个不存在的变量

当然,除非这不是你给我们看的全部课程

详述

我不使用黄金级的destinationY属性。只是大体上 班级

是的,但是您正试图操纵主类的黄金类中名为destinationY的属性

如果您这样做:

public class Gold extends MovieClip
    {
        private var _main:Main
        private var gold:Gold;
        public var destinationY:int = 0;
        ...
    }

您不应该再出现此错误,但我怀疑这会解决所有问题。

在主类的第xx行,您有以下代码:

gold.destinationY = 35+goldRow*75;
您试图访问Gold类的“destinationY”属性,但Gold类没有名为destinationY的公共属性。要添加它,只需将此行添加到Gold类:

public var destinationY;

您能告诉我们错误是在哪一行抛出的吗?非常感谢您的解释!首先,我尝试将1个主类和gold.destinationY中的所有代码组合在一起。destinationY在没有在public var中定义的情况下工作得很好,然后我尝试将其分为gold类和主类。我从来不知道是否需要在另一个类中首先定义它。不管怎样,如果gold.destinationY只在主类中,而没有在公共变量中定义,那么您能解释一下为什么它可以工作吗?我还没有真正了解这些事情。谢谢谢谢我以前不知道它也需要在另一个类中定义。因为当我试着把所有的东西都放在一节课上。destinationY不需要在public var中定义,它仍然有效。你知道为什么会这样吗?
public var destinationY;