Actionscript 3中的错误1119(as3)通过静态类型money_txt的引用访问可能未定义的属性文本

时间:2016-07-16 15:42:13

标签: actionscript-3 flash

这是在主要课程

package  {


import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.display.Sprite;
import flash.events.Event;
public class main extends MovieClip {
    public var scene = 0;
    public var _money = 0;
    public var gain = 1;
    public var clicks = 0;

    public function main() {
        addEventListener(Event.ENTER_FRAME, loop);
        mainbtn.addEventListener(MouseEvent.CLICK, handler);
        playbtn.addEventListener(MouseEvent.CLICK, playHandler);

    }
        var mainbtn:button = new button();
        var playbtn:playbutton = new playbutton();
        var playtxt:playtext = new playtext();
        var cash:money_txt = new money_txt();
        var scene0:MovieClip = new MovieClip();
        var scene1:MovieClip = new MovieClip();

    public function loop(e:Event):void {
        if(scene == 0) {
            addChild(scene0)
            scene0.addChild(playbtn);
            playbtn.x = 300;
            playbtn.y = 200;

            scene0.addChild(playtxt);
            playtxt.x = 300;
            playtxt.y = 100;
        } else {
            scene0.removeChild(playbtn);
            scene0.removeChild(playtxt);
        }
        if(scene == 1) {
            addChild(scene1);
            scene1.addChild(mainbtn);
            mainbtn.x = 300;
            mainbtn.y = 200;
            scene1.addChild(cash);
            cash.text = 'Money: ' + _money.toString();
        } else {
            scene1.removeChild(mainbtn);
        }
    }


    public function playclickHandler(e:MovieClip) {
        scene = 1;
    }
    public function handler(e:MouseEvent):void {
        _money += gain;
        clicks++;
        trace('yep');
    }
    public function playHandler(e:MouseEvent):void {
        scene = 1;
    }
}

} 而这就是错误所在 C:\ Users \ Slime \ Desktop \ Art-ish \ game \ main.as,第47行,第10列1119:通过静态类型money_txt的引用访问可能未定义的属性文本。

感谢您的帮助,如果可以的话!

1 个答案:

答案 0 :(得分:1)

这些应该被定义为公共

public var mainbtn:button = new button();
public var playbtn:playbutton = new playbutton();
public var playtxt:playtext = new playtext();
public var cash:money_txt = new money_txt();
public var scene0:MovieClip = new MovieClip();
public var scene1:MovieClip = new MovieClip();

也很难判断money_txt,playtext,playbutton和button是类还是MovieClip实例。公约规定,类应以大写字母和较低的实例开头。

<强>更新

问题是如果按钮和播放按钮是按钮而playtext和money_txt是MovieClip,你应该将它们实例化。

例如,如果你有

public var mainbtn:button = new button();

但没有名称为button的类,mainbtn将为null。您可能需要做的是

public var mainbtn:Button;
public var cash:MovieClip;

作为主要或其他功能的一部分,分配实例

mainbtn = this['button'];
cash = this['money_txt'];

你可以通过检查trace(cash);检查这是否有效,如果分配不起作用,它将返回null。

我应该再次强调,在不知道你的设置是什么的情况下很难知道到底出了什么问题。我假设money_txt并且您定义的其他类实际上并不是具有自己的链接ID的类,而是MovieClip或舞台中的按钮和动画片段,您将放入此代码。