2012-12-04 66 views
0

我想更改位於另一個類中的var。 我得到了類c_wall.as其包含以下代碼:1120:訪問未定義的屬性速度。

package { 

import flash.display.MovieClip; 
import flash.events.Event; 


public class c_wall extends c_gameObject { 
    public var speed:Number=10; 

    public function c_wall() { 








    } 
    override public function update(){ 
     x-=speed; 

    } 
} 

} 

這個類是我的壁孩子的父母,其是移動在屏幕上絲毫10px的每個幀(我的變種速度的值)一個對象

在主類中,我得到了下面的代碼來改變速度VAR:

 Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; 

     faster.addEventListener(TouchEvent.TOUCH_TAP, fl_TapHandler); 

     function fl_TapHandler(event:TouchEvent):void 
     { 
      trace ("the speed has increased"); 
      speed++;//this is the speed he doesnt know 

     } 

現在我得到的錯誤它不知道該變種速度

我認爲解決方案是將var與update();功能。它也被用在主文件中,就像這樣:

   function onEnterFrame(evt:Event):void 
       { 

        wall.update(; 

        player.update(); 


       } 

但是我不會讓它工作......任何人都知道解決方案嗎?

問候, Merijn

+0

速度在哪裏宣佈 - 並顯示代碼 – Gone3d

回答

1

如果你想保持TouchEvent聽衆在主類,刪除它嘗試訪問speed變量的行。然後,在定義了speed變量的c_wall類中,重寫事件偵聽器回調函數並操作變量。

在主類:

protected function fl_TapHandler(event:TouchEvent):void { 
    //Do things relevant to the main class 
} 

c_wall類:

override protected function fl_TapHandler(event:TouchEvent):void { 
    super.fl_TapHandler(event); //Pass along the event to the parent 
    speed++; 
} 

當然,如果你不使用事件偵聽器都在主類,你總是可以將它沿着繼承鏈向下移動到c_wall類,並跳過覆蓋。

+0

將嘗試,如果我明天上班!聽起來像是對的!我想出了它也可能是更新函數,它是父類的最後一個。當我更改更新函數時,它可能不再使用它,這在之前給了我一個錯誤。無論如何,thanx! –