2013-03-25 60 views
0

出于某种原因,我无法修改Haxe中某个字段的值。当然,这似乎并没有影响我所有的领域,只是这个。这是(我很确定的)适用的代码。首先,在父类: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的方式有关?任何帮助表示赞赏,谢谢。

回答

1

我不能再现你的问题,但你错过了;和超级电话。

试试这个代码。

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; 
     } 
} 
+0

此代码在轨迹中正确返回777。为什么你有HelloWorld扩展MovieClip?我只问,因为在我的情况下,父母和孩子班都扩展了雪碧,我想知道这是否可能是我的问题的来源。我会在我的问题中添加更多代码;我试图保持简短。 – 2013-03-27 13:45:15

+0

那么,原来的代码只是为了表明我遇到了什么样的问题;修改后的代码更能代表我的实际程序。不过,我仍然有同样的问题。 Sprite有什么膨胀?有什么地方我可以阅读更多关于这个?我只是想知道,因为我认为Sprite会比MovieClip更轻。 – 2013-03-28 13:42:45

+0

那么选择什么扩展到你的初始阶段通常是一个非问题,实际上MovieClip扩展了Sprite,所以我错了。在课堂上阅读它,就像我刚刚纠正自己。像intellij想法这样的带有Goto Definition的IDE使得这更容易。你可能会发现看看一些关于显示列表概念的文章很有帮助http://active.tutsplus.com/tutorials/actionscript/as3-101the-display-list/这里讲的是更多的http:/ /www.adobe.com/devnet/flash/quickstart/display_list_programming_as3.html – imp 2013-03-29 01:42:13