Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Function Haxe:字段的返回值_Function_Variables_Return_Field_Haxe - Fatal编程技术网

Function Haxe:字段的返回值

Function Haxe:字段的返回值,function,variables,return,field,haxe,Function,Variables,Return,Field,Haxe,由于某些原因,我无法修改Haxe中字段的值。当然,这似乎并没有影响到我所有的领域,只是这一个。下面是(我非常确定的是)适用的代码。首先,在父类中: class TopMenu extends Sprite { public function new() { super(); init(); } private function init() { var tempField:BitmappedTextFi

由于某些原因,我无法修改Haxe中字段的值。当然,这似乎并没有影响到我所有的领域,只是这一个。下面是(我非常确定的是)适用的代码。首先,在父类中:

class TopMenu extends Sprite 
{
    public function new() 
    {
        super();
        init();
    }
    private function init() 
    {
        var tempField:BitmappedTextField = new BitmappedTextField( "File", 100, false );
        trace( tempField.textWidth );
    }
}
然后,在儿童班:

class BitmappedTextField extends Sprite
{
    private var _fieldText:String;
    private var _fieldWidth:Int;
    private var _addToStage:Bool;
    public var textWidth:Int;
    public function new( thisText:String, thisWidth:Int = 100, adTStg:Bool = true ) 
    {
        super();
        _fieldText = thisText;
        _fieldWidth = thisWidth;
        _addToStage = adTStg;
        textWidth = 55;
        init();
    }
    public function init()
    {
        textWidth = 777;
    }
}

我希望
trace
语句返回
777
,但它总是返回
55
。事实上,无论我做什么,我似乎都不能修改构造函数类之外的字段,然后通过父类检索该值。我肯定错过了一些非常简单的东西,但我就是想不出来。也许这与Haxe使用getter和setter的方式有关?非常感谢您的帮助。

但是我无法重现您的问题,您错过了一个;还有一个超级电话

试试这个代码

package;

import nme.display.Sprite;
import nme.display.MovieClip;

class HelloWorld extends MovieClip
{
        public function new( )
        {
            super();
            var tempField:BitmappedTextField = new BitmappedTextField();
            trace( tempField.textWidth );
        }
}

class BitmappedTextField extends Sprite
{
        public var textWidth:Int;

        public function new( )
        {
            super();
            textWidth = 55;
            init( );
        }

        public function init( )
        {
            textWidth = 777; 
        }
}

此代码在跟踪中正确返回777。你为什么让HelloWorld扩展MovieClip?我之所以问这个问题,是因为在我的例子中,父类和子类都扩展了Sprite,我想知道这是否是我问题的根源。我将在问题中添加更多代码;我试着保持简洁。好吧,最初的代码只是为了显示我遇到了什么样的问题;问题中修订的代码更能代表我的实际程序。不过,我还是有同样的问题。雪碧有什么浮肿?有什么地方可以让我读到更多的吗?我只是想知道,因为我假设Sprite在资源上比MovieClip要轻。好吧,为你的初级课程选择扩展什么通常不是问题,实际上MovieClip扩展了Sprite,所以我错了。在课堂上阅读,就像我刚刚纠正自己一样。像intellij idea这样具有Goto定义的IDE使这变得更容易。你可能会发现阅读一些关于显示列表概念的文章很有帮助。这篇文章讨论了舞台。多谢你的参考,我一定会看一看的。我希望我能理解为什么我在从子对象检索值这样简单的任务中遇到问题。。。我的代码中一定有什么地方出了问题。这可能只是代码的一个简单的错误位置。您以前使用过带断点的调试器吗?这是一种非常有助于了解发生的事情的顺序的事情。flashdevelopeide为带有Flash的haxe提供了一个免费的调试器。