2013-02-24 29 views
0

修改根時間軸設置的變量,我是相當新的動作腳本3,我有一個框架上,我的根時間軸中的變量設置字符的速度我的遊戲:AS3從類

var userSpeed:Number = 2; 

現在,我有一堂課爲我的拍攝,並且我添加了一個熱門測試,以便當我開機時它將速度更改爲4(默認值的兩倍),但由於這是在我的班級內,因此我想知道如何在課堂上從這裏修改變量。

if(this.hitTestObject(speedPower) || this.x < 0 || this.x > stage.stageWidth || this.y < 0 || this.y > stage.stage.height) 
{ 
this.removeEventListener(Event.ENTER_FRAME, moveShot); 
this.parent.removeChild(thisshootTurret); 
this.parent.userSpeed = 4; 
} 

訪問變量只是一個隨機猜測的方式,我無法找到互聯網或這裏適合我的問題,所以這是所有我能想出問題上的任何東西。

目前的方式給了我這個錯誤:

1119: Access of possibly undefined property userSpeed through a reference with static type flash.display:DisplayObjectContainer. 

,我也得到了同樣的錯誤,當我嘗試:

root.userSpeed = 4; 

有什麼建議?

+0

對不起,我的回答錯了,我不明白你的問題。 – 2013-02-24 16:14:13

+0

這很好,我真的需要幫助,你沒有任何想法我可以從我的班級更改該變量嗎? – Engine 2013-02-24 16:21:48

+0

'MovieClip(this.parent).userSpeed = 4'? – 2013-02-24 16:41:46

回答

0

你定義在時間軸變量或函數的任何時間(無論是主時間軸或特定MovieClip時間軸)將其添加到相關聯的類(如果有的話,它是沒有必要的類每MovieClip關聯),以MovieClip那擁有時間表。雖然主時間線始終與文檔類(主類)相關聯,並且您在主時間線上創建了變量,但您可以直接在Main類的構造函數中使用它,但請考慮時間軸上定義的一個重要變量沒有初始化,直到你賦值給它們的幀被執行。

從你的代碼我猜this.parent是主類 - 文檔類的參考。如果這是真的,那麼只需要使用下面的代碼:

if(this.hitTestObject(speedPower) || this.x < 0 || this.x > stage.stageWidth || this.y < 0 || this.y > stage.stage.height) 
{ 
    this.removeEventListener(Event.ENTER_FRAME, moveShot); 
    this.parent.removeChild(thisshootTurret); 
    this.parent.userSpeed = 4; // You just access userSpeed variable because it 
           // is member of Main class. 
} 
+0

對不起,我沒有正確解釋,我現在更新了我的問題,我的意思是根時間線,因爲在我的動作腳本是在一個框架上,我想從一個類訪問變量,而不是「MainTimeline」作爲一個類。 – Engine 2013-02-24 21:39:04

0

林還相當新的AS3,有點晚的問題,但這裏是我學到了一個類中訪問根:

Movieclip(root).userSpeed = 4; 

應該這樣做。您也可以從類內調用根函數:

Object(root).myfunction(); 

永遠不要在您的構造函數中調用根或父項,它將返回null。您可以使用Event.ADDED函數和事件處理函數來規避此問題。