2014-10-08 28 views
0

我已經搜索了arond,但似乎找不到適當的答案。比方說,我們有一個超級基本程序,它從2個輸入文本字段添加兩個數字並將其打印出來。爲什麼我不能在事件處理函數外部使用變量?爲了達到這個目的我需要做些什麼?代碼在一個框架上。AS3,事件處理函數外的變量?

爲什麼這個例子不起作用? :

btn.addEventListener(MouseEvent.CLICK, cal); 

var fnum:Number = Number(txt1.text); 
var snum:Number = Number(txt2.text); 

function cal(evt:MouseEvent){ 


txtOutput.text = String(fnum + snum); 
} 

而這個例子的工作?:

btn.addEventListener(MouseEvent.CLICK, cal); 

function cal(evt:MouseEvent){ 

var fnum:Number = Number(txt1.text); 
var snum:Number = Number(txt2.text); 
txtOutput.text = String(fnum + snum); 
} 
+0

這是從一個類或框架? – Zze 2014-10-08 08:13:15

+0

這是在一個框架 – Skalk 2014-10-08 08:16:32

回答

1

我討厭被這個傢伙,但我不能把它複製發生了什麼對你..

enter image description here

我可以做的唯一假設是txt1.text & txt2.text在示例1中單擊該按鈕時尚未設置。隨意將項目和Dropbox壓縮它對我來說,如果你想我進一步調查:)

+0

感謝您的答案。它不是一個真正的項目,我只是創建了代碼來說明我的問題。如果我在代碼中手動設置變量值,那麼它工作正常。但我很確定,正如你所說的,txt1.text和txt2.text沒有設置當按鈕被點擊!我如何設置它們,是否有這種方法? ?@Zze – Skalk 2014-10-08 08:38:29

+0

AS3自上而下編譯。 如果你看我的形象,事件分配,然後數字。 在你的情況下,fnum&snum被設置爲輸入字段的文本元素。 因此,如果這些字段在這個時候是空白的,那麼你的變量將是空白的。 在將它們分配給它進行測試之前,先放置一條跟蹤語句。 我擔心,如果你在舞臺上的這些領域添加一些文本,這將工作。 只是在變量設置時沒有數據輸入到字段中。 – Zze 2014-10-08 08:45:27

+0

你說得對。謝謝您的幫助 :) – Skalk 2014-10-08 08:57:26