2013-03-25 61 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