2011-01-30 67 views
0

我得到一個錯誤,當我想編譯下面的代碼...對象中的未定義方法?

我拿到的時候我正在嘗試設置與過濾器類變量未定義的方法..

trace(filters.txt()); // returns undefined method 

trace(filters); // returns [object Filters] 

但我m在其他腳本中使用這個相同的對象沒有問題?

package player { 
    import flash.display.Sprite; 

    import filters.Filters; 

    public class Time_bar extends Sprite { 
     private var bar = null; 

     public var color = null; 
     public var _w = 0; 
     public var _h = 0; 
     public var _x = 0; 
     public var _y = 0; 

     public function Time_bar(){ 
      this.bar = new Sprite(); 
      addChild(this.bar); 
     } 

     public function cnstr(){ 
      this.bar.graphics.beginFill('0x'+this.color); 
      this.bar.graphics.drawRect(0, 0, this._w, this._h); 
      this.bar.graphics.endFill(); 
      this.bar.x = this._x; 
      this.bar.y = this._y; 
      this.bar.alpha = 0.75; 
      this.bar.scaleX = 0; 

      var filters = new Filters(); 
      trace(filters); 
      trace(filters.txt()); 
      //filters.txt(this.bar); 
     } 

     public function progress(float){ 
      this.bar.scaleX = float; 
     } 
    } 
} 

的過濾器類如下所示:

package filters { 
    import flash.display.Sprite; 

    import filters.Filters_glow; 

    public class Filters extends Sprite { 
     private var Glow = new Filters_glow(); 

     public function txt(instance){ 
      Glow.color = '93fafe'; 

      instance.filters = [Glow.filter()]; 
     } 

     public function loader(instance){ 
      Glow.color = '93fafe'; 
      Glow.alpha = 0.5; 

      instance.filters = [Glow.filter()]; 
     } 
    } 
} 

Filter_glow:

package filters { 
    import flash.filters.GlowFilter; 

    public class Filters_glow { 
     public var color = '000000'; 
     public var alpha = 0.25; // range: 0-1 
     public var blurX = 4; // range: 0-255; optimized values: 2,4,8,16 etc 
     public var blurY = 4; // range: 0-255; optimized values: 2,4,8,16 etc 
     public var strength = 1; // range: 0-255 
     public var quality = 3; // range: 0-15 
     public var inner = false; 
     public var knockout = false; 

     public function filter(){ 
      this.color = '0x'+this.color; 

      return new GlowFilter(this.color, this.alpha, this.blurX, this.blurY, this.strength, this.quality, this.inner, this.knockout); 
     } 
    } 
} 
+1

`filters.txt(this.bar)`返回什麼?我的邏輯表示,你應該得到一個「錯誤數量不正確的參數」,而不是你得到的那個。 – 2011-01-30 15:28:11

+0

看在第二部分og腳本..它設置了一個實例 – clarkk 2011-01-30 16:10:04

+0

的過濾器屬性它返回注意到.. void – clarkk 2011-01-30 16:10:45

回答

1
var _filters = new Filters(); 
_filters.txt(this.bar); 

aparently過濾器是一個保留的屬性名稱..更換過濾器,以_filters後錯誤消失:)

0

爲了驗證方法 「TXT」 是否存在的過濾器對象,你不得不寫trace(filters.txt); 。相反,您通過添加括號來執行缺少參數的txt方法。在執行時,它會嘗試訪問未定義的instance。我同意Matti的看法,儘管錯誤信息應該說點別的。至於爲什麼filters.txt(this.bar);不起作用,我懷疑問題在於別處,你可以包含調用代碼和Filters_glow類嗎?

+0

我現在已經添加Filters_glow到文本:) – clarkk 2011-01-30 16:33:40

0

錯誤清晰可見。您沒有將必需的參數傳遞給函數txt。

public function txt(instance){ 
      Glow.color = '93fafe'; 

      instance.filters = [Glow.filter()]; 
     } 

所以你只能通過傳遞一個實例來調用txt函數。類似於:

trace(filters.txt(YourObject)); 

我假設參數是要應用過濾器或類似的對象的實例。那麼這是你的函數...

0

嘗試修改您的代碼如下所示,這可能與錯誤幫助:

//... 
public class Filters extends Sprite { 
private var Glow: Filters_glow; 
    public function Filters(){ 
     Glow = new Filters_glow(); 
    } 
    public function txt(instance: DisplayObject = null): Boolean{ 
     if(!instance){ 
      return false; 
     } 
     Glow.color = '93fafe'; 

     instance.filters = [Glow.filter()]; 
     return true; 
    } 
//... 
相關問題